好的,我知道这是一个经常被问到的问题,但我无法得到我想要的东西。
我正在寻找一个正则表达式,以便找到一个不包含特定子字符串的模式。
我想找到一个不包含b
参数的网址。
http://www.website.com/a=789&c=146 > MATCH
http://www.website.com/a=789&b=412&c=146 > NOT MATCH
目前,我有以下正则表达式:
\bhttp:\/\/www\.website\.com\/((?!b=[0-9]+).)*\b
但我错误\b
,正则表达式匹配字符串的开头,当找到b=
时停止,而不是匹配。
请参阅:http://regex101.com/r/fN3zU5/3
有人能帮助我吗?
答案 0 :(得分:2)
使用它:
^http:\/\/www\.website\.com\/((?!b=[0-9]+)).*$
\ b仅匹配单词结尾。
^匹配字符串的开头和结尾
你甚至不需要那么复杂,如果你不想使用b
参数的网址使用这个:
^http:\/\/www\.website\.com\/(?!b).*$
答案 1 :(得分:2)
答案 2 :(得分:1)
你看看这种可能性:
http://regex101.com/r/fN3zU5/6
^http:\/\/www\.website\.com\/[ac\=\d&]*$
只允许&,=,a,c和数字
组中的完整网址,不应该有“b =”参数
如果您有更多选项,而您不想全部列出它们: 你不允许'b'成为参数的一部分
^http:\/\/www\.website\.com\/[^b]*$
http://regex101.com/r/fN3zU5/7
^http:\/\/www\.website\.com\/(?!.*?b=.*?).*$
也适用于此参数字符串的任何位置都允许“b =”,因此您甚至可以将“b”字符串作为参数的值。
答案 3 :(得分:1)
import re
pattern=re.compile(r"(?!.*?b=.*).*")
print pattern.match(x)
如果有" b ="这将展望未来。现在。负向前瞻意味着它与该字符串不匹配。
答案 4 :(得分:0)
这就是你想要的。 ^http:\/\/www\.website\.com\/(([^b]=[0-9]+).)*$
答案 5 :(得分:0)
它的简单模式不灵活但有效:
http:\/\/www\.website\.com\/+a=+\w+&+c=+\w+