首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有“或”运算符的Regex多个字符串

带有“或”运算符的Regex多个字符串
EN

Stack Overflow用户
提问于 2015-02-11 22:20:19
回答 2查看 829关注 0票数 0

我需要建立一个java regex,它将识别以下3种情况:

  1. 以下字符的任何组合/数量:"ACTGactg:“

  1. 有没有一个问号"?“

  1. 任何字符串"NTC“

我将列出我迄今尝试过的内容和出现的错误。

代码语言:javascript
代码运行次数:0
运行
复制
public static final VALID_STRING = "[ACTGactg:]*";
// Matches the first case but not the second or third
// as expected.

public static final VALID_STRING = "\\?|[ACTGactg:]*";
// Matches all 3 conditions when my understanding leads me to
// believe that it should not except the third case of "NTC"

public static final VALID_STRING = "?|[ACTGactg:]*";
// Yields PatternSyntaxException dangling metacharacter ?

我所期望的是准确的:

代码语言:javascript
代码运行次数:0
运行
复制
public static final VALID_STRING = "NTC|\\?|[ACTGacgt:]*";

但是,我希望确保,如果我删除"NTC“,任何"NTC”字符串都将显示为无效。

下面是我用来测试这些regexs的方法。

代码语言:javascript
代码运行次数:0
运行
复制
private static boolean isValid(String thisString){
    boolean valid = false;
    Pattern checkRegex = Pattern.compile(VALID_STRING);
    Matcher matchRegex = checkRegex.matcher(thisString);
    while (matchRegex.find()){
        if (matchRegex.group().length != 0){
            valid = true;
        }
    }
    return valid;
}

以下是我最后的几个问题:

  1. “\”可以吗?“regex可能是一个接受"NTC“字符串的通配符吗?
  2. 或操作符在这里合适吗?
  3. 在使用这些或运算符时,是否需要使用括号?

下面是一些传入字符串的示例:

  • A:C
  • T:G
  • AA:CC
  • T:C:A:G
  • NTC

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-11 22:41:25

是的,所提供的regex是可以的:

代码语言:javascript
代码运行次数:0
运行
复制
public static final VALID_STRING = "NTC|\\?|[ACTGacgt:]+";

..。

代码语言:javascript
代码运行次数:0
运行
复制
boolean valid = str.matches(VALID_STRING);

如果从正则表达式中删除NTC|,则字符串NTC将无效。

您可以对其进行测试,并自行实验这里

票数 2
EN

Stack Overflow用户

发布于 2015-02-11 22:44:17

由于您使用的是Matcher.find()方法,所以您需要在字符串中的任何位置查找您的模式。

这意味着字符串A:CT:GAA:CC等完全匹配。但是NTC呢?

它匹配,因为find()在任何地方寻找匹配。它的TC部分匹配,因此您得到了true

如果希望只匹配字符串的全部内容,可以使用match()方法,或者使用^$

请注意,如果您将模式更改为[ACTGactg:]+而不是[ACTGactg:]*,则不必检查匹配是否长于0。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28465676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档