gpt4 book ai didi

java - 如何在 Java 中使用正则表达式组

转载 作者:行者123 更新时间:2023-11-30 05:33:55 25 4
gpt4 key购买 nike

我需要在以下类型的字符串中将字符串“name”替换为 fullName:

software : (publisher:abc and name:oracle)

需要将其替换为:

software : (publisher:abc and fullName:xyz)

现在,基本上,“name:xyz”部分可以出现在括号内的任何位置。例如

software:(name:xyz)

我正在尝试使用组和我构建的正则表达式看起来:

(\bsoftware\s*?:\s*?\()((.*?)(\s*?(and|or)\s*?))(\bname:.*?\)\s|:.*?\)$)

最佳答案

您可以使用

\b(software\s*:\s*\([^()]*)\bname:\w+

并替换为$1fullName:xyz。请参阅regex demoregex graph :

enter image description here

详细信息

  • \b - 字边界
  • (software\s*:\s*\([^()]*) - 捕获组 1(替换模式中的 $1 是该组中捕获的值):
    • 软件 - 一句话
    • \s*:\s* - 包含 0 个以上空格的 :
    • \( - 一个 ( char
    • [^()]* - 除 ()之外的 0 个或多个字符
  • \bname - 整个单词name
  • : - 冒号
  • \w+ - 1 个或多个字母、数字或下划线。

Java 示例代码:

String result = s.replaceAll("\\b(software\\s*:\\s*\\([^()]*)\\bname:\\w+", "$1fullName:xyz");

关于java - 如何在 Java 中使用正则表达式组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005186/

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