如何制作一个与任何单词都不匹配的正则表达式

时间:2012-03-19 09:04:02

标签: regex

在python代码中

regular_expression = ""
p = re.compile(regular_expression)
result = p.match("some strings")

if result:
    print("Match")
else:
    print("No Match")

我想使regular_expression在任何情况下总是找不到匹配。 我虽然“”(没有语言)会起作用。但遗憾的是它总是回归“匹配”。 我也想知道它为什么会这样。 “”和“。*”如何相同?

4 个答案:

答案 0 :(得分:3)

一个简单的正则表达式是

(?!)

意思是“断言无法匹配空字符串”。

你的“空正则表达式”总是精确匹配,因为它总是可以匹配空字符串。 .match()不要求正则表达式匹配整个字符串,它只要求它应该在字符串的开头匹配,就像它一样。

如果您希望正则表达式匹配整个字符串,请使用anchors

regular_expression = r"\A\Z"

仅匹配空字符串。

修改

在大多数正则表达式中,\z是真正的字符串结尾锚,而\Z也可以在字符串末尾的最后一个换行符之前匹配。但是在Python中,\Z表现为真正的字符串结束锚。

答案 1 :(得分:1)

有无数的表达式永远不会匹配任何东西 例如^(?<=.).(匹配字符串开头的字符和任何前面的字符)。

答案 2 :(得分:1)

这是一个非常奇怪的请求,你能解释为什么需要它吗?

无论如何,表达式&#34;&#34;匹配任何东西,因为要求是正则表达式应该在给定字符串中某处,并且每个字符串中都存在空字符串 - 如果您熟悉在数学中设定理论,这类似于每个集合如何包含空集{}。

现在,你有几种方法可以获得一个不匹配的正则表达式;我想到的第一个是&#34; $ abc&#34;。这要求字符串包含&#34; abc&#34; 字符串的结束之后,这是不可能的,因此没有字符串可以满足此正则表达式。

答案 3 :(得分:-1)

“$ ^”怎么样(行尾,行的开头)?