我尝试在匹配模式之前捕获单词。我的搜索词是“啤酒”。我必须在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 中的错误。请大家帮忙!!!
最佳答案
如果您的搜索字符串应作为另一个单词的一部分出现,则需要在 ale
之前添加 \w*
:
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
}
模式解释:
\w+
- 1 个或多个字母数字或下划线字符\s+
- 1+ 个空格(\W+
将匹配标点符号和其他非单词字符)\\w*
- 零个或多个单词字符(...之前的可选部分。ale
- 文字字符序列。
关于java - 正则表达式在Java中捕获匹配模式之前的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38229593/