Regex 逗号分隔字符串的正则表达式

Regex 逗号分隔字符串的正则表达式,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]+

逗号分隔子字符串置换的正则表达式

我想定义一个正则表达式,它匹配由两个子字符串(由一个逗号分隔)组成的字符串。 每个子字符串不能为空,并且只能由字符“A”、“G”、“C”和“T”组成,且不重复。 因此,模式应匹配字符串,例如:

A、 G
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