Java - 检查字符串是否只包含某些字符(即DNA / RNA)

时间:2013-11-29 17:04:41

标签: java regex string

我正在与正则表达式斗争。

我想做这样的事情:

if (sequence.matches(A|T|G|C)){
String type = "DNA"
}
elseif (sequence.matches(A|U|G|C)){
String type = "RNA"
}

因此,如果序列仅为A,T,G或C,则类型仅设置为DNA,但如果是A,U,G或C,则仅设置为RNA

5 个答案:

答案 0 :(得分:2)

无论编程语言如何,您想要的正则表达式都应测试该字符串是否仅包含从头到尾的感兴趣字符:

^[ACGT]+$

^表示“字符串的开头”。 [ACGT]表示这4个字母中的一个。 +表示必须有一个或多个这些字符。 $表示“字符串结束”。

所以这意味着你的字符串中除了A,C,G或T之外必须没有任何内容,并且必须至少有其中一个字符串。

答案 1 :(得分:2)

正则表达式可能不是您最有效的选择:

static boolean consistsOf(String s, String of) {
  for ( int i = 0; i < s.length(); i++ ) {
    if ( of.indexOf(s.charAt(i)) == -1 ) {
      return false;
    }
  }
  return true;
}

答案 2 :(得分:1)

您可以使用以下正则表达式

if (sequence.matches("[ATGC]+")) { // + for one or more occurrences, * for zero or more occurrences

和其他检查一样。

else if (sequence.matches("[AUGC]+")) { // + for one or more occurrences, * for zero or more occurrences

此外,您需要在双引号if(str.matches("strInDoubleQuotes"))中指定字符串。

答案 3 :(得分:1)

正常表达式为:"[ATGC]+"ATGC匹配。表达式[ATGC]称为Character class,输入字符串应与之匹配。表达式X+Quantifiers的一部分,表示X表达式出现一次或多次。

"ATCCGT".matches("[ATGC]+")

答案 4 :(得分:0)

集合理论将决定这种简化:

String type = (sequence.contains("U")) ? "RNA" : "DNA";    
String type = (sequence.contains("T")) ? "DNA" : "RNA";

没有?坦率地说,甚至不确定你需要2个表达式。