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

标签 java regex

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

我可以使用 matcher.group(index) 获取事件,但如果事件类似于退伍军人节,这将不起作用,因为它是两个词。我只能得到“when is”之后的第一个词

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


另外,假设我想像这样捕捉某人的生日

'什么时候是*生日

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

最佳答案

你可以试试这个:

^when is (.*)$

这将找到一个以 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));
}

输出应该是:

group 1: when is Veteran's Day.
group 2: Veteran's Day.

关于Java - 正则表达式匹配多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961684/

相关文章:

javascript - 如何通过使用正则表达式调用 str.replace() 来删除非 'ui-*' 单词

用于生成与正则表达式匹配的字符串的 C# 代码

regex - 除非在本地主机上,否则将规则重写为 HTTPS

c++ - 使用 C++ 的正则表达式

python - 获取重叠匹配的开始和停止索引?

java - 从默认实现访问建议的对象方法

java - 如何在android中为textview/edittext添加星号红色标记,使其成为必填字段?

java - 动态配置 Message Driven Bean 中的 MappedName 注解

java - 将 String 'temp' 值的每个新值添加到 ArrayList 中,而不覆盖之前的 'temp'

JAVA - 如何加速顺序任务