问题
在一个非常特殊的情况下,我的否定前瞻是一个空列表:
(?!^()$)
有没有匹配的字符串?
澄清
假设:
(?!^()$)^(.*)$
它会匹配所有内容吗?
请您参考如下方法:
(?!^()$) 可以简化为 (?!^$) 因为 () 是空组并且将始终匹配任何位置。
所以现在您说的是“在开始和结束 anchor 不相邻的任何位置匹配,或者换句话说,我们不在空字符串处”。
因此 (?!^$) can match at every position in a string that isn't just empty or a newline .
(?!^()$)^(.*)$ 是“在任何地方都匹配,但在空字符串处匹配”加上 ^.*$ 将“在并消耗每一行,无论是否为空”( anchor ^ 和 $ 在这种情况下无效)。所以它本质上是在说“消耗(至少)一个字符串中的一个或多个字符”,可以将其简化为 .+
