使用正则表达式替换java中的字符序列
我有以下文字 “这个球不是你的,这个是约翰的” 我想纠正这一点 “这个球不是你的,这个是约翰的” 如何在Java中使用模式和匹配器实现这一点?使用正则表达式替换java中的字符序列,java,regex,matcher,Java,Regex,Matcher,我有以下文字 “这个球不是你的,这个是约翰的” 我想纠正这一点 “这个球不是你的,这个是约翰的” 如何在Java中使用模式和匹配器实现这一点? 这里有一个在这种情况下,您可以使用: s = s.replaceAll("\\b?\\b", "'"); 那么你就不太可能像@glowcoder提到的那样替换合法的问号了。然而,我认为@Philipp是正确的,这确实是一个字符编码问题。看起来你的文字应该是: "This ball isn’t yours, this one is John’s" 如果
这里有一个在这种情况下,您可以使用:
s = s.replaceAll("\\b?\\b", "'");
那么你就不太可能像@glowcoder提到的那样替换合法的问号了。然而,我认为@Philipp是正确的,这确实是一个字符编码问题。看起来你的文字应该是:
"This ball isn’t yours, this one is John’s"
如果编码为cp-1252,但解码为ASCII,则卷曲的单引号将替换为问号。如果是这种情况,您可能会找到其他字符,如卷曲双引号(
”
)、en-dash(–
)和em-dash(-
),这是对字符编码问题的事后修复吗?你有没有理由使用正则表达式来解决这个问题,而不仅仅是用一个字符序列替换另一个字符序列?你如何避免这是约翰的球?
变成这是约翰的球?
这是约翰的球吗?->这是约翰的球吗?@smas,这不会发生,因为([st])
我已经评论了你文章的第一个版本。但是仍然替换“?”to对我来说很奇怪。
"This ball isn’t yours, this one is John’s"