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

标签 java regex regex-group

我需要在以下类型的字符串中将字符串“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/

相关文章:

regex - PowerShell 正则表达式 : Capturing strings between two strings that is on multiple lines

javascript - 正则表达式匹配双引号内的每个字符串并包含转义引号

java - 面向 Java、.NET 或 Ruby 的 Smalltalk 编译器

c# - Javascript/.NET 正则表达式

regex - 如何在 Perl 中压缩独立字符?

regex - 是否有用于逗号分隔的离散值列表的正则表达式?

Java:垃圾收集的资格

java - Swing GUI 未更新

java - 如何在android studio中生成多值二维码

python - 使用正则表达式 python 时出现由 `|` 分隔的标记错误