-1

从以下单词“tacacatac”中,我想匹配“cat”。似乎正则表达式 c.*?t 应该给我这个,但我猜它从第一次出现“c”开始,然后从那里找到下一个“t”,因此匹配“cacat”。

有没有办法(可能使用负前瞻)在最后一个 t 之前从 c 开始查找?

------编辑----- 如果您用字符串替换字母,我需要一个可以工作的选项

谢谢。

4

2 回答 2

2

您可以使用否定字符类:

c[^ct]*t

这将匹配任何字符,但介于c两者t之间。

于 2013-08-12T22:52:21.383 回答
0

尝试这个:

my $str = "the cat in the cat in the hat";
if ($str =~ /(cat(?:(?!cat).)*hat)/) {
    print $1, "\n";
}
于 2013-08-13T01:49:53.670 回答