正则表达式默认值,如果没有找到

问题描述:

我想为我的正则表达式提供一个'默认'值,所以如果我找的东西没有找到,它会返回默认值,就好像它找到了它。正则表达式默认值,如果没有找到

这是可能使用正则表达式吗?

这听起来像你想要某种正则表达式语法,说“如果正则表达式不匹配给定字符串的任何部分假装它匹配以下子字符串:'foobar'”。我见过的任何正则表达式语法中都不存在这样的功能。

你可能需要的东西是这样的:

matched_string = string.find_regex_match(regex); 
if(matched_string == null) { 
    string = "default"; 
} 

(这当然需要进行调整,以您使用的语言)

+1

错误。我希望我不必这样做。谢谢 – Zim 2009-08-24 04:28:24

据我所知,你不能用RegExp做到这一点,至少在Perl Compatible Regular Expressions中是这样。

你可以看到你自己here

很难回答这个问题没有一个具体的语言,但在Perl至少,像这样的工作:

$string='hello'; 
$default = 1234; 
($match) = ($string =~ m/(\d+)/ or $default); 
print "$match\n"; 

1234 

不是正则表达式的严格一部分,但避免了额外的条件块。