是否可以匹配某个模式但返回一个不同的任意字符串(不一定体现在测试字符串中)?我希望正则表达式返回任意字符串。
嵌入式Perl代码可以执行,或者只使用周围的编程语言处理返回的部分。但我很想知道是否有可能只使用正则表达式。让我将其表述为(错误的)if语句模式。
(?(?=test)"true"|"false")
我没有特定的正则表达式方言,但能够用C#,PHP,Perl,JavaScript或Python等通用语言来做这件事会很棒。所以,请不要专用软件。
我对正则表达式的理解告诉我,你不能返回那些不存在的东西(由Jan复活),严格来说,正则表达式模式只返回一个真/假的结果,说明它是否匹配(正如Borodin指出的那样)。但仍然。
答案 0 :(得分:3)
非破坏性/r
modifier 返回已更改的字符串,如果模式匹配当然
my $arb_str = $string =~ s/.*$pattern.*/arbitrary-string/r;
答案 1 :(得分:2)
答案:你不能从带有正则表达式的字符串中得到任何东西。您可以查找具有前瞻的字符串,并可以返回该字符串的其他部分,例如与
\b\w+\b(?=\W*wp78de)
<小时/>
要拥有你想要的东西,你很可能需要某种编程语言:
if ($match) {
return "some string here";
} else {
return "some other string";
}
答案 2 :(得分:0)
不,这不是正则表达式所做的事情。然后,正则表达式匹配不一定&#34;返回&#34;任何东西。你要问的是,如果在任何地方,使用正则表达式的语言细节都会有答案。如果你要解释你的实际问题,以及你使用正则表达式的上下文,你将有更好的机会得到一个有用的答案。