Regex 一个简单的Perl正则表达式保证永远不会匹配字符串?

Regex 一个简单的Perl正则表达式保证永远不会匹配字符串?,regex,perl,Regex,Perl,可能重复: 我有一个以正则表达式作为参数的脚本。默认情况下,我希望将正则表达式设置为与任何字符串都不匹配的值,因此我可以简单地说 if ($str =~ $regex) 例如,不必首先检查定义的($regex) 我想出了 qr/[^\s\S]/ 但是不知道这是否会匹配一些既不是空格也不是非空格的utf8字符。将任意字符的负前瞻性与该字符的匹配结合起来,例如 /(?!x)x/ 在我抛出的所有测试用例上工作。下面是一些测试。/^/似乎可以,而且是简短的(est) MJD的解决方案比这里提供的

可能重复:

我有一个以正则表达式作为参数的脚本。默认情况下,我希望将正则表达式设置为与任何字符串都不匹配的值,因此我可以简单地说

if ($str =~ $regex)
例如,不必首先检查定义的($regex)

我想出了

qr/[^\s\S]/

但是不知道这是否会匹配一些既不是空格也不是非空格的utf8字符。

将任意字符的负前瞻性与该字符的匹配结合起来,例如

/(?!x)x/

在我抛出的所有测试用例上工作。下面是一些测试。

/^/
似乎可以,而且是简短的(est)


MJD的解决方案比这里提供的任何方案都要好,或者在所谓的dup问题上,这一点值得保留。@tchrist:从我公认的狭隘观点来看,MJD的任何东西都是纯金的。这个人是Perl炼金术士或什么的。说明:空模式
/
(?:)
没有断言任何东西,因此总是匹配的
(?!)
是空模式的一种消极前瞻(介于
之间的内容是断言的主体),因此永远无法匹配。@hobbs:Nitpick://可以匹配某些内容;这是一个特殊的空模式,如果有一个匹配的正则表达式,它将重用最后一个匹配的正则表达式…:(@Hugmeir是的,我不是说
/
,但我想这有点不清楚:)
/(?!)/