【问题标题】:java substring by Regex正则表达式的java子字符串
【发布时间】:2012-05-05 16:36:51
【问题描述】:

我有以下字符串 "Class (102) (401)" 和 "Class (401)" 我想找到正则表达式来查找子字符串,它总是从 "Class (102) (401)" 中返回值 'Class'或“类 (102)”

以下是我的代码

Pattern MY_PATTERN = Pattern.compile(".^(\\(\\d+\\))");
    Matcher mat = MY_PATTERN.matcher("Class (102) (401)");
    while (mat.find()){
        System.out.println(mat.group());
    }

【问题讨论】:

  • 你为什么不做一些简单明了的事情,比如^\S+

标签: java regex substring


【解决方案1】:

我看不出这有什么用 - 但如果你需要它,如果你使用这个正则表达式,“类”将在第一个匹配组中:

(Class)(?:\s*\(\d+\))+

如果您需要捕捉其他单词后跟相同的模式,只需使用:

(.*?)(?:\s*\(\d+\))+

如果它是您所追求的数字而不是字符串“类”,请使用这个,匹配也将在捕获组中:

Class(?:\s*\(\(d+)\))+

您需要转义反斜杠,为了便于阅读,我将其省略了。

【讨论】:

  • 如果OP需要数字,那么他自己的正则表达式已经很完美了,除了开头的.^
【解决方案2】:

如果你想知道 'Class' 是否包含在字符串中,为什么不使用 String.contains("Class")?

【讨论】:

  • Class 只是一个示例字符串,会有另一个值代替。
【解决方案3】:

你可以像这样使用 String#replaceAll 来得到你想要的:

String substr = str.replaceAll("^([\\S]+).*$", "$1");

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多