Skip to main content
 首页 » 编程设计

c#之正则表达式 '(!^()$)' 可以匹配任何内容吗

2024年02月05日29mengfanrong

问题

在一个非常特殊的情况下,我的否定前瞻是一个空列表:

(?!^()$) 

有没有匹配的字符串?

澄清

假设:

(?!^()$)^(.*)$ 

它会匹配所有内容吗?

请您参考如下方法:

(?!^()$) 可以简化为 (?!^$) 因为 () 是空组并且将始终匹配任何位置。

所以现在您说的是“在开始和结束 anchor 不相邻的任何位置匹配,或者换句话说,我们不在空字符串处”。

因此 (?!^$) can match at every position in a string that isn't just empty or a newline .

(?!^()$)^(.*)$ 是“在任何地方都匹配,但在空字符串处匹配”加上 ^.*$ 将“在并消耗每一行,无论是否为空”( anchor ^ 和 $ 在这种情况下无效)。所以它本质上是在说“消耗(至少)一个字符串中的一个或多个字符”,可以将其简化为 .+