我想替换不在提供的列表中的
[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}:;<,>.?/ ]
我想包含反斜杠\
在此列表中,这样反斜杠就不会被替换。
如果我这样给予
.replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/ ]","")
它没有按我的预期工作。
"xyda\asff"..replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/ ]","")
Expected result :: xyda\asff
Output :: xydaasff
我不想更换\
.
您需要申请two转义级别 - 一种用于正则表达式本身,另一种用于 Java 字符串文字。这意味着你需要four连续的反斜杠。所以:
replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/\\\\ ]", "")
我假设\\d
旨在覆盖任何数字,而不是actually推杆d
在列表中?
您可能会发现最简单的方法是将模式打印到控制台,这样您就可以准确地看到正则表达式引擎所看到的内容,而无需进行相关的 Java 字符串文字转义。上面的模式是:
[^-\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\:;<,>.?/\\ ]
所以带反斜杠的位是:
-
\d
(digit)
-
\:
(colon)
-
\\
(反斜杠)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)