我做了一个正则表达式:
\b\w+((\w'\b)|('\w\w\b)|(\w'\w\b))
我正在尝试匹配以下单词:that's
、、you're
和something'
我的问题是,虽然这是匹配的,但它并不匹配整个单词。
that's
以匹配that'
为例。
请问我做错了什么?
这是java。
问题是你的交替顺序。
匹配的原因that'
是因为您的第一个替换是\w'\b
. 如果您将第一个更改为\w'\w\b
您应该会发现它that's
现在可以正确匹配。
您应该查看此页面以获取有关交替的更多信息。具体来说,底部涵盖了您的问题。
为什么不使用简单的正则表达式: ([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);
}
请参阅此演示。