我想在以下字符串中首先'from'后提取单词 -
来自Chemicon的抗CD24和来自Santa的抗CD48
现在,我正在使用 -
“从\ S +([^ \ S] +)”
但它同时给出“Chemicon”和“Santa”的结果,而不仅仅是'Chemicon'。
答案 0 :(得分:1)
也许你可以这样做:
Pattern p = Pattern.compile("from\\s+([^\\s]+)");
Matcher m = p.matcher("anti-CD24 from Chemicon, and anti-CD48 from Santa");
if (m.find()) {
System.out.println(m.group(1));
}
这只需要第一个。也许你可以使用这个正则表达式来避免第一场比赛的逗号(Chemicon,
):from\\s+([a-zA-Z]+)
答案 1 :(得分:0)
您可以在Method对象上使用lookingAt
方法。它在找到第一场比赛后停止。
与matches
函数类似,与find
函数lookingAt
不同,从头开始匹配,因此我们必须使用正则表达式".*?from\\s+(\\w+)"
,其中包含:匹配任何内容直到第一个“从”,然后是一个或多个空白字符,然后是下一个“字”。如果您只希望字母字符匹配“from”后的单词,请使用".*?from\\s+([a-zA-Z])"
。开头的".*?"
表示非贪婪的匹配。如果您只使用".*"
,它将匹配最后一个“来自”,而不是第一个。
这是我测试过的代码:
String s = "anti-CD24 from Chemicon, and anti-CD48 from Santa";
Matcher m = Pattern.compile(".*?from\\s+(\\w+)").matcher(s);
if (m.lookingAt()) {
System.out.println(m.group(1));
}
打印出来:
Chemicon