正则表达式中是否存在匹配(有条件地)只有它存在的东西?
e.g。
字符串可能
question_1
或仅
question
如果是前者,它应该与最后的整数相匹配,但就后者而言,应该保留它。
答案 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)?