一个两部分的问题:
- 是否有任何理论上的正则表达式永远不会匹配任何字符串(使用通用语法而没有现代正则表达式匹配器提供的任何花哨的东西)?
- 有没有一种简单的方法可以使用 C# 的 Regex 语法来创建一个永远不会匹配任何字符串的正则表达式(这一次,所有花哨的东西都包括在内)?
注意:我不是指匹配空字符串(这很容易,只是""
)。
如果没有多行模式,结尾通常不会出现在开头之前:
$.^
或者更简单地说,再次没有多行模式:
$.
使用环视,你可以做各种矛盾的事情:
(?=a)(?=b)
这迫使一个角色同时成为两种不同的事物,这当然是不可能的。
例如,您可以使用相互矛盾的lookbehinds
\w(?<!\w)
这里\w
将匹配任何单词字符,并且lookbehind(?<!\w)
将确保最后一个字符不是单词。
就像你可以匹配任何字符一样[\s\S]
,你不能匹配任何字符[^\s\S]
(或[^\w\W]
等)。