查找以大写字母开头的括号中的内容?

Find contents of parentheses that start with UPPERCASE letter?

我要抓取括号内的内容,不包括括号。 然后在末尾加一个冒号加上下图的字体项。

之前:(Woman 1), (Ki-Woo), (Drunk)

之后:<font color="#FF4500"><b>Woman 1:</b></font>

这是我目前的情况:

查找:(\([A-Z]*(?:(\h*|-)[A-Z0-9][a-z]*)*\))

替换:\<font color\=\"\#FFA500\"\>\<b\>()\:\<\/b\>\<\/font\>

目前我的还是包含了查找中的括号。

使用您尝试过的模式,您可以将捕获组切换到括号内部,并使第二个捕获组成为非捕获组。

然后在替换中使用第 1 组。

\(([A-Z]*(?:(?:\h*|-)[A-Z0-9][a-z]*)*)\)

Regex demo

为了不匹配空括号,您可以将模式写为:

\(([A-Z][a-z]*(?:(?:\h*|-)[A-Z0-9][a-z]*)*)\)
  • \( 匹配 (
  • ( 捕获 组 1
    • [A-Z][a-z]* 匹配单个字符 A-Z 和可选字符 a-z
    • (?: 非捕获组作为一个整体重复
      • (?:\h*|-) 匹配 0+ 个水平空白字符或单个 -
      • [A-Z0-9][a-z]* 匹配单个字符 A-Z 和可选字符 a-z
    • )*关闭并重复非捕获组0+次
  • ) 关闭组 1
  • \) 匹配 )

Regex demo

请注意,模式的这一部分 (?:\h*|-) 可以匹配可选的水平空白字符或单个连字符,并匹配 Ki Woo 但也可以匹配 KiWoo

在替换使用组 1 中使用 </code></p> <pre><code><font color="#FF4500"><b></b></font>

一如既往的简短代码,我刚刚检查过,工作完美...

查找:\(([\w \d-]*)\)
全部替换:\<font color\=\"\#FFA500\"\>\<b\>\:\<\/b\>\<\/font\>