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

时间:2012-11-28 13:46:37

标签: c# .net regex

分为两部分问题:

  1. 是否有任何理论正则表达式永远不会匹配任何字符串(使用一般语法而没有现代正则表达式匹配器提供的任何花哨的东西)?
  2. 有没有一种简单的方法可以使用C#的正则表达式语法来创建一个永远不会匹配任何字符串的正则表达式(这次,包含所有花哨的东西 )?
  3. 注意:我指的是匹配空字符串(这很简单,只有"")。

3 个答案:

答案 0 :(得分:7)

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

$.^

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

$.

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

(?=a)(?=b)

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

答案 1 :(得分:5)

你可以使用矛盾的lookbehinds,例如

\w(?<!\w)

此处\w将匹配任何单词字符,并且lookbehind (?<!\w)将确保最后一个字符不是单词。

答案 2 :(得分:4)

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