是否有正则表达式永远不会匹配任何字符串?

分为两部分问题:

  1. 是否有任何理论正则表达式永远不会匹配任何字符串(使用一般语法而没有现代正则表达式匹配器提供的任何花哨的东西)?
  2. 有没有一种简单的方法来使用C#的正则表达式语法来创建一个永远不会匹配任何字符串的正则表达式(这次,包括所有奇特的东西)?

注意:我不是指匹配空字符串(这很容易,只是"" )。

正如您可以使用[\s\S]匹配任何字符一样,您可以不与[^\s\S] (或[^\w\W]等)匹配任何字符。

如果没有多行模式,结尾通常不会出现在开头之前:

 $.^ 

或者更简单地说,再次没有多线模式:

 $. 

通过外观,你可以做各种矛盾的事情:

 (?=a)(?=b) 

这迫使角色同时成为两个不同的东西,这当然是不可能的。

例如,你可以使用矛盾的外观

 \w(? 

这里\w将匹配任何单词字符和lookbehind (?将确保最后一个字符不是单词。