【发布时间】:2018-05-12 00:48:35
【问题描述】:
这是我的第一篇文章。我对 Java 中的 String 有疑问。我想使用正则表达式。提前感谢您的帮助。
我的字符串是:
String str = "abXYxyzXYZabXasdfggXYZ".
我想用“+”替换所有字符,但下面不可变:
String word = "XYZ"
所以输出应该是这样的:
+++++++XYZ+++++++++XYZ.
我一开始是:
str.replaceAll("[^" + word + "]", "+")
但是我得到了不同的输出:
++XY+++XYZ++X++++++XYZ
【问题讨论】:
-
java.util.regex不支持匹配除特定 multicharacter 文本字符串之外的任何文本的构造。几乎所有的正则表达式都不支持它。 -
这是因为正则表达式中的
[...]表示单个字符集。你不能那么容易地表示整个单词的倒数。所以[^XYZ]匹配不是X、不是Y和不是Z的每个字符,所以除了X, Y, Z之外的整个字母表。它确实不匹配不等于单词XYZ的整个单词。