我想定位/替换文本中的单词。单词示例为“T\xc3\x9cT\xc3\x9c”。这是代码:
\n\n final String regexX = "T\xc3\x9cT\xc3\x9c";\n final String string = "dsad dasdasd dasd \\n"\n + "dsds\\n"\n + " dd \\n"\n + "sadsd.sdasd. \\n"\n + " universit\xc3\xa4t \\n"\n + " bl\xc3\xb6 \\n"\n + " Bl\xc3\xb6\\n"\n + " ble\\n"\n + "\xc3\xbceee \\n"\n + " W\xc3\xb6rterbuch \\n"\n + "Das gute alte T\xc3\xbct\xc3\xbc wird";\n final String subst = "";\n\n final Pattern pattern = Pattern.compile(regexX, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);\n final Matcher matcherX = pattern.matcher(string);\n\n final String result = matcherX.replaceAll(subst);\n\n System.out.println("Substitution result: " + result);\nRun Code Online (Sandbox Code Playgroud)\n\n结果是,什么都没有被取代。这实际上是从 regex101.com 复制的代码,其中德语 T\xc3\x9cT\xc3\x9c 也无法识别。不区分大小写对德语“Umlaute”不起作用是真的吗?还是有办法让它起作用?
\nfinal Pattern pattern = Pattern.compile(regexX, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Run Code Online (Sandbox Code Playgroud)
您需要添加Pattern.UNICODE_CASE,否则仅 US-ASCII 字符集用于 CASE_INSENSITIVE:
启用支持 Unicode 的大小写折叠。当指定此标志时,当通过 CASE_INSENSITIVE 标志启用时,不区分大小写的匹配将以符合 Unicode 标准的方式完成。默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。
还可以通过嵌入的标志表达式 (?u) 启用支持 Unicode 的大小写折叠。
指定此标志可能会造成性能损失。
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |