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

Javascript 正则表达式匹配模式x,但返回任意字符串y,javascript,c#,php,regex,perl,Javascript,C#,Php,Regex,Perl,是否可以匹配某个模式,但返回不同的任意字符串(不一定包含在测试字符串中)?我希望正则表达式返回任意字符串 嵌入的Perl代码就可以了,或者只是用周围的编程语言处理返回的部分。但我很想知道是否可以只使用正则表达式。让我将其表述为(错误的)if语句模式 (?(?=test)"true"|"false") 我脑子里没有特定的regex方言,但如果能用C#、PHP、Perl、JavaScript或Python这样的通用语言来实现这一点,那就太好了。所以,请不要使用专用软件 我对正则表达式的理解告诉我

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

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

(?(?=test)"true"|"false")
我脑子里没有特定的regex方言,但如果能用C#、PHP、Perl、JavaScript或Python这样的通用语言来实现这一点,那就太好了。所以,请不要使用专用软件



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

如果模式匹配,则非破坏性的
/r
将返回更改的字符串

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

可用的

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

\b\w+\b(?=\W*wp78de)
请参阅。

要获得您想要的,您很可能需要某种编程语言:

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

不,这不是正则表达式所做的事情。但是正则表达式匹配不一定“返回”任何东西。您所问的问题将在使用正则表达式的语言的细节中找到答案(如果有)。如果您能解释您的实际问题,以及使用正则表达式的上下文,您将有更好的机会得到有用的答案。

您的意图并不那么清楚。你的意思是什么?我想到了命名组。但我更希望它在(匹配)结果中包含任意字符串。我不想取得任何成就。我只是好奇。我想到了“环顾四周”:你在寻找某样东西,它可能在那里,也可能不在那里,并且可能会返回其他匹配的字符。不过,请更精确地说明您想要的内容。@Jan.当然可以,但如果该任意字符串不在测试字符串中?@wp78de:为了澄清我的意思,我想到了这样一个问题:它使用相同的表达式返回Berlin或London。一般来说,虽然你不能返回某个不存在的东西。但这是一个替换,而不仅仅是一个模式。@simbabque它是一个正则表达式,如果模式匹配,它会返回任意字符串。(几乎是问题的引语。)“only-a-pattern”只有在某种正则表达式的上下文中才有意义;我认为它是一个替代品并不重要,因为它回来了。我确实不完全清楚到底需要什么,但我想这正是我在问题中读到的。我同意你的所有观点,我会给出同样的答案。然而,实际的正则表达式只是一种模式,这让我感到很困扰。实际上,
s//
是替换运算符。所以,如果我们允许通俗地使用regex这个词,我会说这个答案是完美的。我可能只是在吹毛求疵@simbabque是的,它(适时地)进入了语义学;到底要什么?我认为模式本身在代码中没有可操作的意义(对引擎来说);一旦匹配,
m/
s/
就会发生不同的事情。如果我们期望(捕获的)模式“返回”,那么返回的是
m/
(或者
s////r
)。因此,我同意“regex”更广泛的含义。当我开始在这里探索我的选择时,我也考虑过用正则表达式替换,但拒绝了。在你回答之后,我更倾向于认为这是最好的,也许是唯一的选择。