如何构建这个正则表达式?

时间:2015-10-08 13:09:41

标签: regex

示例:ATG

我想用这些标准捕获所有字符串:

开始:TAA
跟随3x字符集:A或C或G或T
结束:TAGTGAATGCCCTAA

例如:ATGTTTTAG/[ACGT]*((ATG)(([ACGT]){3})+(TAA|TAG|TGA))[ACGT]*/g

我在这里有一个正则表达式:ATGTTTTAG,但它只匹配上一个ATGCCCTAA而不是ATGCCCTAA。我不知道为什么?

请帮助我编写与ATGTTTTAG和{{1}}匹配的模式。

以下是在线示例: https://regex101.com/r/iO8lF9/1

4 个答案:

答案 0 :(得分:5)

此正则表达式效果良好/(ATG(?:A{3}|C{3}|G{3}|T{3})(?:TAA|TAG|TGA))/g

正如您在此处所见:https://www.regex101.com/r/gZ0zA9/2

我希望它有所帮助

答案 1 :(得分:0)

使用反向引用可以缩短你的正则表达式:

ATG([AGCT])\1{2}(?:TGA|TA[AG])

RegEx Demo

它在[AGCT]之后与ATG匹配,并将其分组为捕获的组#1。接下来我们匹配\1{2}以确保相同的字母重复3次。

答案 2 :(得分:-1)

尝试...

^ATG[AGCT]{3}(TAA|TAG|TGA)$

答案 3 :(得分:-1)

我使用这种模式并且它有效,谢谢大家的帮助。 /(ATG(?:A {3} | C {3} | G {3} | T {3})(:?TAA | TAG | TGA))/ G