使Python RegEx更加简洁

时间:2018-06-25 20:09:29

标签: python regex

尽管我对JavaScript有相当的经验,但我还是不太熟悉Python,所以我只需要研究Python的特质。考虑到这一点,并且我知道JS RegEx和Python RegEx之间存在一些细微的差异,我对Python RegEx语句有疑问。有什么方法可以使以下陈述更简洁?

整个正则表达式

^https://www.indiegogo.com/explore/[a-z]+-?[a-z]+\?project_type=[a-z]+&project_timing=[a-z]+_?[a-z]+&tags=&sort=trending$

^https://www.indiegogo.com/explore/[a-z]+-?[a-z]+\?project_type=[a-z]+&project_timing=[a-z]+_?[a-z]+&tags=&sort=trending$

整个正则表达式的分解

我将为您进一步细分。该URL地址将始终以 ^https://www.indiegogo.com/explore/ 开头,并始终以 &tags=&sort=trending$ 结尾,因此无需担心,但是...

[a-z]+-?[a-z]+\?project_type=[a-z]+&project_timing=[a-z]+_?[a-z]+

...是正则表达式的重要部分,可以进一步细分。

URL结构和动态值的可能格式

  1. ^https://www.indiegogo.com/explore/
  2. worddash-separatedseparated-by-dasheswords-separated-by-dashes
  3. ?project_type=
  4. word
  5. &project_timing=
  6. wordadditional_word
  7. &tags=&sort=trending$

可以完全忽略步骤1.3.5.7.,这给我们留下了...

唯一动态值

2. 2. worddash-separatedseparated-by-dasheswords-separated-by-dashes

6 .. wordadditional_word

可能是我自己的无知或经验不足,但是可以说我设计的正则表达式很笨拙。 有什么方法可以改善这种正则表达式?!

1 个答案:

答案 0 :(得分:1)

没有可供测试的示例URL,我能找到的最简单的解决方案是:

^https:\/\/www.indiegogo.com\/explore\/[a-z\-?_=]+&project_timing=[a-z_]+&tags=&sort=trending$

这是我做不同的事情的细目:

  • 我用[a-z]+-?[a-z]+\?project_type=[a-z]+代替了[a-z\-?_=]+
  • 我使用了[a-z]+_?[a-z]+而不是[a-z_]+

我看到的唯一问题是您没有充分利用角色类。如果您想提供一些示例URL,我将能够解决您可能遇到的任何问题。 But as far as I can tell, it does what you need it to.

如果您确实要简化,也可以使用^https:\/\/www.indiegogo.com\/explore\/[\w\-]+&project_timing=[\w]+&tags=&sort=trending$,但这可能不够严格。