RegEx匹配(如果存在)

时间:2011-10-08 12:19:45

标签: regex

正则表达式中是否存在匹配(有条件地)只有它存在的东西?

e.g。

字符串可能

question_1

或仅

question

如果是前者,它应该与最后的整数相匹配,但就后者而言,应该保留它。

5 个答案:

答案 0 :(得分:6)

?是Regexes中的0-1量词。 \d?表示0或1位数。 *是0无限量词。 \d*表示0位或更多位数。这是你想要的吗? (另外,+是1个或多个量词,而不是量词意味着1)

详细说明你的问题,我会说

question(_\d+)?

question后跟可选的(_和1位或更多位数)

括号仅用于对子表达式进行分组(它们是“数学”括号)

答案 1 :(得分:2)

不太明白这个问题。你只想提取数字吗?

question_(\d+)

答案 2 :(得分:2)

如果要提取数字
question(?:_?)(\d)?

答案 3 :(得分:1)

在perl中你可以做类似的事情:

my $string = 'question_1';
my $question_number = $string =~ /question_(\d+)/i;

现在$question_number如果匹配则会保留int,如果不匹配则为undef

答案 4 :(得分:0)

如果下划线和数字是可选的,请尝试以下方法:

  

question(?:_\d)?