gpt4 book ai didi

Java String.replaceAll 根据模式追加前缀和后缀

转载 作者:行者123 更新时间:2023-12-02 00:54:25 26 4
gpt4 key购买 nike

我有一个这样的字符串

DEBUG-172- {com.xyz.testing.test1} - server {logger msg}
DEBUG-122- {com.xyz.testing.test2} - server {logger message}
DEBUG-162- {com.xyz.testing.t1} - server {logger mg}
DEBUG-178- {com.xyz.testing.t2} - server {logger text}

我需要把它转换成这样,

DEBUG-172- <span>{com.xyz.testing.test1}</span> - server {logger msg}
DEBUG-122- <span>{com.xyz.testing.test2}</span> - server {logger message}
DEBUG-162- <span>{com.xyz.testing.t1}</span> - server {logger mg}
DEBUG-178- <span>{com.xyz.testing.t2}</span> - server {logger text}

如何在 Java 中执行此操作?

我尝试了下面的方法,但没有用。

data = data.replaceAll("(?<=\\{com)([^\\}]+)(?=\\})", "<span>$1</span>");

它产生的结果如下

DEBUG-172- {com<span>.xyz.testing.test1</span>} - server {logger msg}
DEBUG-122- {com<span>.xyz.testing.test2</span>} - server {logger message}
DEBUG-162- {com<span>.xyz.testing.t1</span>} - server {logger mg}
DEBUG-178- {com<span>.xyz.testing.t2</span>} - server {logger text}

简单地说,我需要添加 <span>之前{com</span>在其对应的}之后.

最佳答案

问题是环视机制是zero-length (他们不包括在匹配中,你也可以认为他们在进入环视之前将光标设置到它的原始位置)。

所以不要使用它。只需让您的组以 {com 开头并以 } 结尾。在这两者之间,您可以接受任何不是 } 的字符(我们不想包含多个 })。

您也不需要额外的捕获组。整个匹配项默认存储在组 0 中,您可以通过 $0 访问它。

所以你的代码应该看起来更像

data = data.replaceAll("\\{com[^\\}]+\\}", "<span>$0</span>");

关于Java String.replaceAll 根据模式追加前缀和后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922946/

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