正则表达式 - 禁止某个字符串

时间:2017-06-21 18:13:57

标签: python regex regex-negation regex-lookarounds

所以我是正则表达式的新手并试图编写一个与此匹配的正则表达式:

example.com/some-url-text-here/

但不是

example.com/some-url-text/but-also-more-than-two-slashes/
example.com/text-here/one-slash-too-many/two-slashes-too-many/

基本上,我希望它匹配一个string-separated-by-dashes包含不超过两个/所包围的网址。

我尝试了几个不同的事情,例如negative look aroundnot ....我尝试过的最后一件事是:

example\.com/[a-zA-z]*-*/

[a-zA-z]*-*text-here匹配,但我无法匹配/text-here/ ..在这种情况下我做错了什么?

3 个答案:

答案 0 :(得分:2)

使用lookahead尝试下面的正则表达式,它将断言第二次后没有反斜杠

example\.com\/[a-zA-Z-]+[a-zA-Z]\/(?!.*\/)

demo

答案 1 :(得分:1)

如果你有regexen的问题,你可以简单地split "/"左右,确保元素不为空(除了可能是最后一个)并且不超过3元件。

您可以使用-1作为参数,以确保最后一个元素被拆分:

>>> "some/url//".split("/", -1)
['some', 'url', '', '']

答案 2 :(得分:1)

你的正则表达式不起作用的原因是因为你的顺序。

example\.com/[a-zA-z]*-*/

这是寻找文本UPPER和更低和那些连字符。只需在括号中包含连字符,如下所示:

example\.com/[a-zA-z-]*/