我想在以下字符串中的第一个“来自”之后提取单词-
“来自 Chemicon 的抗 CD24 和来自 Santa 的抗 CD48”
现在,我正在使用 -
“来自\s+([^\s]+)”
但它给出的结果是“Chemicon”和“Santa”,而不仅仅是“Chemicon”。
我想在以下字符串中的第一个“来自”之后提取单词-
“来自 Chemicon 的抗 CD24 和来自 Santa 的抗 CD48”
现在,我正在使用 -
“来自\s+([^\s]+)”
但它给出的结果是“Chemicon”和“Santa”,而不仅仅是“Chemicon”。
也许你可以做这样的事情:
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]+)
您可以lookingAt
在 Method 对象上使用该方法。它在找到第一个匹配项后停止。
像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));
}
打印出来:
化学康