只有存在时,正则表达式中是否存在匹配(有条件)的东西?
EG
字符串可能
question_1
或者只是
question
在前者的情况下,它应该与最后的整数匹配,但是在后者的情况下,它应该保留它。
?
是Regexes中的0-1量词。 \d?
表示0或1位数。 *
是0无限量词。 \d*
表示0位或更多位数。这是你想要的吗? (另外+
是1个或多个量词,而不是量词意味着1)
我会说,详细说明你的问题
question(_\d+)?
question
后跟一个可选的(_
和1位或更多位)
括号仅用于对子表达式进行分组(它们是“数学”括号)
不太明白这个问题。你只想提取数字吗?
question_(\d+)
如果要提取数字
question(?:_?)(\d)?
在perl你可以做类似的事情:
my $string = 'question_1';
my $question_number = $string =~ /question_(\d+)/i;
现在$question_number
如果匹配将持有int,如果不匹配则将是undef
如果下划线和数字是可选的,请尝试以下方法:
question(?:_\d)?