gpt4 book ai didi

java - 正则表达式以 "ATG"开头,以 "TAG, TAA orTGA"结尾,但中间不包含 "ATG"和 "TAG, TAA or TGA"

转载 作者:行者123 更新时间:2023-11-30 02:16:57 28 4
gpt4 key购买 nike

我正在字符串中搜索以 ATG 开头、以 TAG、TAA 或 TGA 结尾且长度 = 3 的倍数的模式。ATGTAG、TAA 或 TGA 只能分别出现在开头或结尾。这意味着:

ATGTTGTGATGT提取ATGTTTGTGA

ATGATGTTGTGATGT提取ATGTTGTGA

目前我正在使用正则表达式 (ATG)([ATG]{3})+?(TAG|TAA|TGA)

对于ATGATGTTGTGATGT,这给我带来了错误的结果ATGATGTTGTGA。我试过:

(^ATG)(!?=.*ATG)([ATG]{3})+?(TAG|TAA|TGA)
(^ATG)(!?=(ATG)+)([ATG]{3})+?(TAG|TAA|TGA)

如何告诉它在开始时只包含 ATG 一次,之后不再包含?

最佳答案

您可以使用

ATG(?:(?!ATG)[ATG]{3})*?(?:TAG|TAA|TGA)

请参阅regex demo

详细信息

Java demo :

String rx = "ATG(?:(?!ATG)[ATG]{3})*?(?:TAG|TAA|TGA)";
String s = "ATGTTGTGATGT, ATGATGTTGTGATGT, ATGATGTTGTGATGT";
Pattern pattern = Pattern.compile(rx);
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(0));
}

结果:

ATGTTGTGA
ATGTTGTGA
ATGTTGTGA

关于java - 正则表达式以 "ATG"开头,以 "TAG, TAA orTGA"结尾,但中间不包含 "ATG"和 "TAG, TAA or TGA",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48042548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com