Regex 逗号分隔字符串的正则表达式
逗号分隔子字符串置换的正则表达式 嗨 我想定义一个正则表达式,它匹配由两个子字符串(由一个逗号分隔)组成的字符串。 每个子字符串不能为空,并且只能由字符“A”、“G”、“C”和“T”组成,且不重复。 因此,模式应匹配字符串,例如: A、 GRegex 逗号分隔字符串的正则表达式,regex,string,perl,Regex,String,Perl,逗号分隔子字符串置换的正则表达式 嗨 我想定义一个正则表达式,它匹配由两个子字符串(由一个逗号分隔)组成的字符串。 每个子字符串不能为空,并且只能由字符“A”、“G”、“C”和“T”组成,且不重复。 因此,模式应匹配字符串,例如: A、 G AG,CT TC,CA把你的问题分解成几个步骤 首先查找允许的格式和字符。然后检查以确保没有重复 use strict; use warnings; while (<DATA>) { print if /^[ACGT]+,[ACGT]+
AG,CT
TC,CA把你的问题分解成几个步骤 首先查找允许的格式和字符。然后检查以确保没有重复
use strict;
use warnings;
while (<DATA>) {
print if /^[ACGT]+,[ACGT]+$/ && !/(\w)\w*\1/;
}
__DATA__
A,G
AG,CT
TC,CA
GAT,CGA
CGAT,TG
,G
ACGT
X,A
AA,G
AC,GGC
ATGA,TGG
ATCXG,AAC
把你的问题分成几个步骤 首先查找允许的格式和字符。然后检查以确保没有重复
use strict;
use warnings;
while (<DATA>) {
print if /^[ACGT]+,[ACGT]+$/ && !/(\w)\w*\1/;
}
__DATA__
A,G
AG,CT
TC,CA
GAT,CGA
CGAT,TG
,G
ACGT
X,A
AA,G
AC,GGC
ATGA,TGG
ATCXG,AAC
我觉得你很接近。这也应该有效。
它基本上做了@Miller's做的事情 更新-压缩版本
# /(?m)^(?:(?:^|,)(?:([AGCT])(?![AGCT]*\1)){1,4}){2}$/
(?m) # Multiline mode
^ # BOL
(?: # Total cluster
(?: ^ | , ) # BOL or comma
(?: # AGCT Cluster grp
( [AGCT] ) # (1), Capture single character [AGCT]
(?! # Negative lookahead
[AGCT]* # As many [AGCT] needed
\1 # to find what is captured in group 1
) # End Negative lookahead
){1,4} # End AGCT Cluster grp 1-4 characters
){2} # Total cluster, do 2 times
$ # EOL
我觉得你很接近。这也应该有效。
它基本上做了@Miller's做的事情 更新-压缩版本
# /(?m)^(?:(?:^|,)(?:([AGCT])(?![AGCT]*\1)){1,4}){2}$/
(?m) # Multiline mode
^ # BOL
(?: # Total cluster
(?: ^ | , ) # BOL or comma
(?: # AGCT Cluster grp
( [AGCT] ) # (1), Capture single character [AGCT]
(?! # Negative lookahead
[AGCT]* # As many [AGCT] needed
\1 # to find what is captured in group 1
) # End Negative lookahead
){1,4} # End AGCT Cluster grp 1-4 characters
){2} # Total cluster, do 2 times
$ # EOL
非常整洁。但我同情正则表达式引擎!非常整洁。但我同情正则表达式引擎!这给了我一些使用命名捕获组的乐趣。谢谢你,罗伯特!我希望我们的其中一个答案对您的设置很有效:)StackOverflow是获取Regex帮助和建议的好地方!我能问一下这是什么样的功能所需要的吗?我想知道这个模式识别可以用于什么环境。这给了我一些使用命名捕获组的乐趣。谢谢你,罗伯特!我希望我们的其中一个答案对您的设置很有效:)StackOverflow是获取Regex帮助和建议的好地方!我能问一下这是什么样的功能所需要的吗?我想知道这种模式识别可以用于什么环境。
# /(?m)^(?:(?:^|,)(?:([AGCT])(?![AGCT]*\1)){1,4}){2}$/
(?m) # Multiline mode
^ # BOL
(?: # Total cluster
(?: ^ | , ) # BOL or comma
(?: # AGCT Cluster grp
( [AGCT] ) # (1), Capture single character [AGCT]
(?! # Negative lookahead
[AGCT]* # As many [AGCT] needed
\1 # to find what is captured in group 1
) # End Negative lookahead
){1,4} # End AGCT Cluster grp 1-4 characters
){2} # Total cluster, do 2 times
$ # EOL