从perl教程中了解特定的perl Regex

时间:2015-12-09 16:45:37

标签: regex perl

Crossposted on perlmonks

您好, 考虑到这个简单的正则表达式:

/(\w\w\w)*?TGA/g

和这两个字符串:

ATCGTTGAA

ATCGTTGAATGCAAATGACATGAC

我试图逐步理解正则表达式引擎正在搜索的内容,即:

步骤1:尝试匹配(\ w \ w \ w)0次,成功,尝试匹配之后的TGA,失败(那里发生了什么?回溯?)

第2步:...... ???

谢谢大家。

1 个答案:

答案 0 :(得分:2)

这很简单。你需要分步进行分析。

1)捕获3字母数字

2)继续捕获3个小组,直到你得到TGAnon greedy

所以ATCGTTGAA你有

1)ATC - GTT --GAA(找不到TGA所以先跳过然后重新开始搜索)

2)TCG - TTG - AA(找不到TGA所以跳过秒然后再开始搜索)

3)CGT - TGAFound

同样适用于第二个例子。