gpt4 book ai didi

Java正则表达式问题

转载 作者:行者123 更新时间:2023-12-01 15:29:41 30 4
gpt4 key购买 nike

要求:字符串“richText”,可以包含纯文本+ anchor 标记。重写anchor标签,修改其target,追加JS等

问题:模式匹配器 find() 和appendReplacement() 工作正常,直到 anchor 标记中没有特殊字符 "$" 。当 $ 是 anchor 标记的一部分时,它会抛出异常

第 1 行修复了异常部分,但如果“$”或“\”以纯文本形式出现,则会产生问题,因为纯文本现在有额外的转义字符上述 2 个特殊字符(quoteReplacement() 的 bcoz)。如何从纯文本中去除额外的转义字符(撤消 quoteReplacement 的影响)?

方法:

    String richText = Matcher.quoteReplacement(rText); //Line 1-escape characters   
String anchorTagPattern = "<a[^>]*?href\\s*=[^>]*>(.*?)</a>";
StringBuffer result = new StringBuffer(richText.length());
Pattern pattern = Pattern.compile(anchorTagPattern);
Matcher matcher = pattern.matcher(richText);
while (matcher.find()) {
String aTag = matcher.group();
.......
String formattedAnchorTag = rewriteTag(aTag);
matcher.appendReplacement(result, formattedAnchorTag); ....
}
matcher.appendTail(result);
//Plain text with $ \ has some additional escape characters because of Line 1. How to remove them:

输入的rText是

Plain text having $. Anchor tag to be rewritten is <a href=\"http://www.google.com\">google$</a>

如果方法中的 Line1-quoteReplacement 被注释,那么我会得到java.lang.IllegalArgumentException:非法组引用 在 java.util.regex.Matcher.appendReplacement(Matcher.java:724)

如果我离开它,异常就会消失,但返回的字符串是

Plain text having \$. Anchor tag to be rewritten is <a href="http://www.google.com" target="_blank">google$</a>

最佳答案

不应在 rText 上调用

Matcher.quoteReplacement。模式中的第一个问号似乎是多余的。只有 rewriteTag 可能是原因。

<小时/>
formattedAnchorTag = Matcher.quoteReplacement(formattedAnchorTag);
matcher.appendReplacement(result, formattedAnchorTag);

关于Java正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708738/

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