【问题标题】:Ignoring text between parenthesis in Regex忽略正则表达式中括号之间的文本
【发布时间】:2013-03-03 00:52:41
【问题描述】:

我的目标是读取字符串并忽略括号中的文本。

public static void main(String[] args) {
    Pattern checkRegex= Pattern.compile("([a-zA-Z]{3,30}\\s*){2}");
    
    Matcher regexMatcher=checkRegex.matcher("James Hunt(Skateboarder)");
    
    while(regexMatcher.find()){
    System.out.println(regexMatcher.group().trim());
}

当前输出为:

詹姆斯·亨特

滑板手

基本上我想要的只是输出“James Hunt”。 在这种情况下,什么是合适的正则表达式模式?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    这适用于给定字符串中的所有非嵌套括号:

    String input = "James Hunt(Skateboarder)";
    String output = input.replaceAll("\\([^)]*?\\)", "");
    

    【讨论】:

      【解决方案2】:

      基本上我想要的只是输出“James Hunt”。 在这种情况下,什么是合适的正则表达式模式?

      尝试正则表达式:^[^(]*

      【讨论】:

        【解决方案3】:

        如果您不必使用正则表达式,您可以通过一次简单的迭代获取数据

        String data="some (sentence (with) nested) paranhesis";
        StringBuilder buffer=new StringBuilder();
        int parenthesisCounter=0;
        for (char c:data.toCharArray()){
            if (c=='(') parenthesisCounter++;
            if (c==')') parenthesisCounter--;
            if (c!=')' && c!='(' && parenthesisCounter==0)
                buffer.append(c);
        }
        System.out.println(buffer);
        

        输出:

        some  paranhesis
        

        【讨论】:

        • 我同意,正则表达式在这种情况下没有意义。但任务要求它......
        猜你喜欢
        • 1970-01-01
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        相关资源
        最近更新 更多