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

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]\/(?!.*\/)

demo