正则表达式 - 禁止某个字符串
Regex - forbidding a certain string
所以我是正则表达式的新手,正在尝试编写一个与此匹配的正则表达式:
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/
基本上,我希望它匹配一个 url,其中一些 string-separated-by-dashes
被不超过两个 /
包围。
我尝试了一些不同的东西,比如 negative look around or ...我最后尝试的是:
example\.com/[a-zA-z]*-*/
[a-zA-z]*-*
匹配 text-here
之类的东西,但我无法让它匹配 /text-here/
.. 在这种情况下我做错了什么?
如果您在使用正则表达式时遇到问题,您可以简单地 split 围绕 "/"
,确保元素不为空(可能最后一个元素除外)并且没有更多元素超过 3 个元素。
您可以使用 -1
作为参数,以确保拆分最后的元素:
>>> "some/url//".split("/", -1)
['some', 'url', '', '']
你的正则表达式不起作用的原因是你的顺序。
example\.com/[a-zA-z]*-*/
这是在查找文本 UPPER 和 lower 以及 THEN 连字符。只需在括号中包含连字符,如下所示:
example\.com/[a-zA-z-]*/
尝试使用 lookahead 下面的正则表达式,它会断言在第二个
之后不再有反斜杠
example\.com\/[a-zA-Z-]+[a-zA-Z]\/(?!.*\/)
所以我是正则表达式的新手,正在尝试编写一个与此匹配的正则表达式:
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/
基本上,我希望它匹配一个 url,其中一些 string-separated-by-dashes
被不超过两个 /
包围。
我尝试了一些不同的东西,比如 negative look around or
example\.com/[a-zA-z]*-*/
[a-zA-z]*-*
匹配 text-here
之类的东西,但我无法让它匹配 /text-here/
.. 在这种情况下我做错了什么?
如果您在使用正则表达式时遇到问题,您可以简单地 split 围绕 "/"
,确保元素不为空(可能最后一个元素除外)并且没有更多元素超过 3 个元素。
您可以使用 -1
作为参数,以确保拆分最后的元素:
>>> "some/url//".split("/", -1)
['some', 'url', '', '']
你的正则表达式不起作用的原因是你的顺序。
example\.com/[a-zA-z]*-*/
这是在查找文本 UPPER 和 lower 以及 THEN 连字符。只需在括号中包含连字符,如下所示:
example\.com/[a-zA-z-]*/
尝试使用 lookahead 下面的正则表达式,它会断言在第二个
之后不再有反斜杠example\.com\/[a-zA-Z-]+[a-zA-Z]\/(?!.*\/)