正则表达式匹配具有固定前缀和后缀的可变数量的作品

时间:2009-09-26 03:30:55

标签: java regex

示例输入: 是xxx xxx xxx(可以是任意数量的单词)活着还是死?

例如:

 Did   Michael      Jackson  live or     die     ?

我想捕捉:迈克尔杰克逊,活着,死。句子可以在单词之间有任意数量的空格。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

Did\\s+(.+)\\s+(\\S+)\\s+or\\s+(\\S+)\\s*\\?

或者我错过了什么?

编辑:将单个反斜杠更改为双反斜杠

答案 1 :(得分:1)

这样的事情会起作用。你将需要选择第一组迈克尔杰克逊,然后用空格分割它。

Pattern regex = Pattern.compile("^Did (.+)\s+(\w+)\s+or\s+(\w+)$", 
                                  Pattern.CASE_INSENSITIVE | 
                                  Pattern.UNICODE_CASE);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) 
{
  String []person = regexMatcher.group(0).split(" ");
  String action1 = regexMatcher.group(1);
  String action2 = regexMatcher.group(2);
}