1

我做了一个正则表达式:

\b\w+((\w'\b)|('\w\w\b)|(\w'\w\b))

我正在尝试匹配以下单词:that's、、you'resomething'

我的问题是,虽然这是匹配的,但它并不匹配整个单词。 that's以匹配that'为例。

请问我做错了什么?

这是java。

4

2 回答 2

1

问题是你的交替顺序。

匹配的原因that'是因为您的第一个替换是\w'\b. 如果您将第一个更改为\w'\w\b您应该会发现它that's现在可以正确匹配。

您应该查看此页面以获取有关交替的更多信息。具体来说,底部涵盖了您的问题。

于 2013-02-04T15:30:05.357 回答
0

为什么不使用简单的正则表达式: ([a-zA-Z]*'[a-zA-Z]*)


演示:

String str = " something' that's you're my";
Pattern p = Pattern.compile("([a-zA-Z]*'[a-zA-Z]*)");
Matcher m = p.matcher(str);
while (m.find()) {
  String match = m.group();
  System.out.println(match);
}

请参阅此演示

于 2013-02-04T16:06:36.157 回答