正则表达式匹配模式x但返回任意字符串y

时间:2017-10-15 06:40:09

标签: javascript c# php regex perl

是否可以匹配某个模式但返回一个不同的任意字符串(不一定体现在测试字符串中)?我希望正则表达式返回任意字符串。

嵌入式Perl代码可以执行,或者只使用周围的编程语言处理返回的部分。但我很想知道是否有可能只使用正则表达式。让我将其表述为(错误的)if语句模式。

(?(?=test)"true"|"false")

我没有特定的正则表达式方言,但能够用C#,PHP,Perl,JavaScript或Python等通用语言来做这件事会很棒。所以,请不要专用软件。

我对正则表达式的理解告诉我,你不能返回那些不存在的东西(由Jan复活),严格来说,正则表达式模式只返回一个真/假的结果,说明它是否匹配(正如Borodin指出的那样)。但仍然。

3 个答案:

答案 0 :(得分:3)

非破坏性/r modifier 返回已更改的字符串,如果模式匹配当然

my $arb_str =  $string =~ s/.*$pattern.*/arbitrary-string/r;

可用since 5.14.0

答案 1 :(得分:2)

答案:你不能从带有正则表达式的字符串中得到任何东西。您可以查找具有前瞻的字符串,并可以返回该字符串的其他部分,例如与

\b\w+\b(?=\W*wp78de)

请参阅a demo on regex101.com

<小时/> 要拥有你想要的东西,你很可能需要某种编程语言:

if ($match) {
    return "some string here";
} else {
    return "some other string";
}

答案 2 :(得分:0)

不,这不是正则表达式所做的事情。然后,正则表达式匹配不一定&#34;返回&#34;任何东西。你要问的是,如果在任何地方,使用正则表达式的语言细节都会有答案。如果你要解释你的实际问题,以及你使用正则表达式的上下文,你将有更好的机会得到一个有用的答案。