从下面的单词“tacacatac”,我想匹配“猫”。似乎正则表达式c。*?t应该给我这个,但我想它从第一次出现“c”开始然后从那里找到下一个“t”,因此匹配“cacat”。
有没有办法(可能使用负向前瞻)从最后一个t之前的c开始寻找?
- - - - - - - - 编辑 如果你用字符串替换字母
,我需要一个可行的选项感谢。
答案 0 :(得分:2)
您可以使用否定字符类:
c[^ct]*t
这将匹配除c
和t
之间的任何字符。
答案 1 :(得分:0)
试试这个:
my $str = "the cat in the cat in the hat";
if ($str =~ /(cat(?:(?!cat).)*hat)/) {
print $1, "\n";
}