如果存在则匹配正则表达式

12
有没有正则表达式可以(有条件地)匹配仅存在的内容?
例如:
字符串可能。
question_1
或者仅仅是这样。
question

如果是前一种情况,它应该与末尾的整数匹配,但对于后一种情况,则应将其保留。


2
"leave it" 的意思是什么?你想匹配这两个字符串中的任意一个,无论结尾是否带有下划线和数字吗? - Andrew Hare
1
这个问题表明了对正则表达式的零知识,甚至不是零,而是null。SO并不是一个教程。当你在这里发帖时,你应该至少了解你所询问的基础知识。 - xanatos
你是想说,如果有下划线,则必须跟着一个数字,否则末尾不应该有下划线吗? - Anwar
5个回答

13
?是正则表达式中的0-1量词。\d?表示0或1个数字。*是0或多个量词。 \d*表示0或多个数字。这符合您的要求吗? (此外,+是1或多个量词,而没有量词表示正好1个)
question(_\d+)?

问题后面可以跟一个可选项 (_ AND 1 或更多数字)

其中括号只是用来分组子表达式的(它们是“数学”括号)


3

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

question_(\d+)

3
如果您想提取数字
question(?:_?)(\d)?

1

在 Perl 中,你可以这样做:

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

现在,如果匹配成功,$question_number 将保存 int 值,否则将为 undef

1

如果下划线和数字是可选的,请尝试使用以下代码:

question(?:_\d)?


他试图表达的是,如果有一个下划线,则应该存在一个数字。否则,只有“question”而没有结尾的下划线。 - Anwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接