0

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

以下是我的代码

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

3 回答 3

0

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

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

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

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

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

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

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

于 2012-05-05T16:55:15.823 回答
0

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

于 2012-05-05T16:48:54.913 回答
0

您可以使用 String#replaceAll 来获得您想要的东西,如下所示:

String substr = str.replaceAll("^([\\S]+).*$", "$1");
于 2012-05-05T17:05:54.687 回答