gpt4 book ai didi

java - 具有异常 unicode 字符和单词边界的正则表达式模式

转载 作者:行者123 更新时间:2023-12-01 10:49:07 25 4
gpt4 key购买 nike

我遇到了有关正则表达式模式的问题,我希望有人能给我解释一下:

任务是匹配对象名称并将其从存储在对象字段之一的描述中删除。我尝试了以下表达式:

    final String description= object.getDescrition();
final Matcher descriptionMatcher=
Pattern.compile("\\b" + object.getName() + "\\b", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE)
.matcher(description);

一切正常,直到代码遇到添加到名称中的“注册商标”符号:String name = ObjectName®

如果我删除最后一个单词边界,它会再次匹配。这种行为的原因是什么?我如何改进此代码以找到所有此类特殊情况?

注意:商标符号与对象名称​​没有通过空格分隔。

最佳答案

在这种情况下,请将您的模式更改为:

"\\b\\Q" + object.getName() + "\\E(?<=\\b|®)"

如果您需要处理更复杂的情况,请在环视中使用交替而不是字边界。示例:

"(?<=\\s|^)\\Q" + object.getName() + "\\E(?=\\s|$)"

"(?<=\\s|^)" + Pattern.quote(object.getName()) + "(?=\\s|$)"

关于java - 具有异常 unicode 字符和单词边界的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com