Java-正则表达式匹配多个单词

Sub*_*esh 4 java regex

假设您要使用以下正则表达式匹配字符串:“。when is(\ w +)。 ”-我试图在“ when is”之后获取事件

我可以通过matcher.group(index)来获取事件,但是如果该事件像退伍军人节那样是无效的,因为这是两个字,所以它不起作用。我只能在'when is'之后得到第一个单词

我应该使用什么正则表达式来获取“ when is”之后的所有单词


另外,假设我想捕捉某人,例如

'什么时候*生日

如何使用正则表达式捕获is和Birthday之间的所有文本?

roy*_*key 6

您可以尝试以下方法:

^when is (.*)$
Run Code Online (Sandbox Code Playgroud)

这将找到一个以开头的字符串,when is并将其他所有内容捕获到该行的末尾。

正则表达式将返回一组。您可以这样访问它:

String line = "when is Veteran's Day.";
Pattern pattern = Pattern.compile("^when is (.*)$");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
}
Run Code Online (Sandbox Code Playgroud)

输出应为:

group 1: when is Veteran's Day.
group 2: Veteran's Day.
Run Code Online (Sandbox Code Playgroud)