Java 变节

Java 变节,java,regex,Java,Regex,我做了一个正则表达式: \b\w+((\w'\b)|('\w\w\b)|(\w'\w\b)) 我试图匹配这样的词:那是,你是,和某物' 我的问题是,虽然这是匹配,但它并不匹配整个单词。 that匹配为that'作为示例 请问我做错了什么 这是java 问题在于你的选择顺序 “匹配的原因是因为您的第一个替换是\w'\b。如果您将第一个更改为\w'\w\b,您会发现它将正确匹配,即现在的 您应该了解更多关于变更的信息。特别是底部部分涵盖了您的问题。问题是您的备选方案的顺序 “匹配的原因是因为您的第一

我做了一个正则表达式:

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

我试图匹配这样的词:
那是
你是
,和
某物'

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

请问我做错了什么


这是java

问题在于你的选择顺序

“匹配的原因是因为您的第一个替换是
\w'\b
。如果您将第一个更改为
\w'\w\b
,您会发现它将正确匹配
,即现在的


您应该了解更多关于变更的信息。特别是底部部分涵盖了您的问题。

问题是您的备选方案的顺序

匹配的原因是因为您的第一个替换是
\w'\b
。如果您将第一个更改为
\w'\w\b
,您会发现它将正确匹配
,即现在的


您应该了解更多关于变更的信息。具体地说,底部部分涵盖了您的问题。

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


演示:
请参见

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


演示:
请参见

那“
某物”
是在同一种情况下,不是吗?
那“
某物”
是在同一种情况下,不是吗?与:
\b\w+('\w\b)|(\w'\w\b)|(\w'\b))
我测试了它,而
某物
不匹配,但其他一切都匹配。为什么<代码>这是一个测试。这是一个测试。你是个笨蛋。“某物”是一种测试。
@user2001545试试
\b\w+('\w\w\b)|(\w'\w\b)|(\w'(?!\w))
是的,谢谢你的工作。因此,这不是一个单词边界,而是在撇号后寻找一个非单词字符。这很可能是因为
something'
的末尾没有结束单词边界,因为它后面跟着一个撇号,然后是一个空格。这两个字符都被视为非单词字符。使用:
\b\w+('\w\w\b)|(\w'\w\b)|(\w'\b))
我测试了它,发现
某个东西不匹配,但其他东西都匹配。为什么<代码>这是一个测试。这是一个测试。你是个笨蛋。“某物”是一种测试。
@user2001545试试
\b\w+('\w\w\b)|(\w'\w\b)|(\w'(?!\w))
是的,谢谢你的工作。因此,这不是一个单词边界,而是在撇号后寻找一个非单词字符。这很可能是因为
something'
的末尾没有结束单词边界,因为它后面跟着一个撇号,然后是一个空格。这两种字符都被视为非单词字符。
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);
}