如何在perl的正则表达式中匹配单词的重复

时间:2014-09-04 06:33:26

标签: regex perl

情况很简单。单词“gat”可能在字符串中出现0或1次。如何编写正则表达式来匹配它?

现在我只能使用以下内容来做我想要的事情。它适用于我的情况,虽然它也匹配“ga”,“at”等。

$str =~ m/(g?a?t?)/

我想有一个更简单的表达方式来使用“?”在“gat”这个词上,但是我尝试了“{}”并且它不起作用。

谢谢!

2 个答案:

答案 0 :(得分:4)

使用Non-capturing Group? quantifier

$str =~ m/...(?:gat)?.../

也可以写成:

$str =~ m/...(?:gat){0,1}.../

答案 1 :(得分:1)

.*?(\b(?:gat)\b)?

试试这个。这会给所有的gat。

http://regex101.com/r/pP3pN1/33