尽管我对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结构和动态值的可能格式
^https://www.indiegogo.com/explore/
word
或dash-separated
或separated-by-dashes
或words-separated-by-dashes
?project_type=
word
&project_timing=
word
或additional_word
&tags=&sort=trending$
可以完全忽略步骤1.
,3.
,5.
和7.
,这给我们留下了...
唯一动态值
2. 2. word
或dash-separated
或separated-by-dashes
或words-separated-by-dashes
6 .. word
或additional_word
可能是我自己的无知或经验不足,但是可以说我设计的正则表达式很笨拙。 有什么方法可以改善这种正则表达式?!
答案 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$
,但这可能不够严格。