java - 提取单词 "Class"之后的所有第一个单词

标签 java regex

以下代码返回 Application aaa bbbb xxxx Ass 。但是我也不想提取 xxxx Ass 单词。如何解决这个问题?

public static final String EXAMPLE_TEST = "ddd with fff Node  preceded"
            + " by Class Application  bzxcd by " 
            + "Class aaa ds  preceded by Class bbbb xxxx Ass";

String pattern = ".*?Class(\\s)+(\\w+)";
System.out.println(EXAMPLE_TEST.replaceAll(pattern, "$1$2"));

预期输出:

Application aaa bbbb

最佳答案

您不需要在此处使用replaceAll。使用这个正则表达式:

"\\bClass\\s+(\\w+)\\b";

并使用 Matcher.find() 方法来获取像这样的匹配:

Pattern p = Pattern.compile("\\bClass\\s+(\\w+)\\b");

Matcher m = p.matcher(EXAMPLE_TEST);

while (m.find()) {
    System.out.println(m.group(1));
}

关于java - 提取单词 "Class"之后的所有第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616105/

相关文章:

javascript - 如何摆脱正则表达式结果中的 "undefined"?

PHP 正则表达式 @ vs/

Java:数组作为引用类型,在方法中

java - 基本路径使用异常 : Cannot join to attribute of basic type

Java Connection.setClientInfo 结果 AbstractMethodError

正则表达式从带小数的文本中提取十进制数

java - 如何为 Executors.newFixedThreadPool 设置超时并在超时后创建线程

JUnit 测试中的 java.util.ConcurrentModificationException

ruby - 反斜杠 + Ruby 正则表达式中的捕获组

python - 在多个文件中搜索多个正则表达式,然后输出每个匹配项及其各自的文件