正则表达式在Java中匹配模式之前捕获单词

时间:2016-07-06 16:59:36

标签: java regex

我试图在匹配模式之前捕获单词。我的搜索词是“ale”。我必须在ale

之前得到这个词

输入

"Golden pale ale by @KonaBrewingCo @ Hold Fast Bar", 

我只想要Golden pale字。只是为了在匹配模式之前得到单词。

String pattern = "\w+\s" + "ale";
Pattern regex = Pattern.compile(pattern); 
Matcher m = regex.matcher(stat);
if(m.find()){ Do something }

但它显示我在Java中的错误。有人请帮忙!!!

2 个答案:

答案 0 :(得分:3)

如果您的搜索字符串应显示为另一个字词的一部分,则需要在\w*之前添加ale

String keyword = "ale";
String rx = "\\w+\\s+\\w*" + keyword;
Pattern p = Pattern.compile(rx);
Matcher matcher = p.matcher("Golden pale ale by @KonaBrewingCo @ Hold Fast Bar");
if (matcher.find()) {
    System.out.println(matcher.group(0)); // => Golden pale
}

请参阅IDEONE demo

模式说明

  • \w+ - 一个或多个字母数字或下划线字符
  • \s+ - 1+个空格(\W+将匹配偶数标点符号和其他非单词字符)
  • \\w* - 零个或多个单词字符(可选部分......
  • ale - 字面字符序列。

答案 1 :(得分:0)

字符\是一个转义字符。你需要做这样的事情:

String pattern = "\\w+\\s" + "ale";