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);
}