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

Find contents of parentheses that start with UPPERCASE letter?

提问人:Hank K 提问时间:8/13/2021 最后编辑:John KugelmanHank K 更新时间:8/13/2021 访问量:66

问:

我想抓取括号的内容,不包括括号。 然后在末尾添加冒号以及如下所示的字体项。

以前:(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\>($1)\:\<\/b\>\<\/font\>

目前,我的仍然在“查找”中包含括号。

正则表达式 记事本++

评论

0赞 Haji Rahmatullah 8/13/2021
@Hank ,在我的编辑器中,您的代码和 Kugelman 的代码都给出了相同的结果。.(女 1)、<font color=“#FF4500”><b>女人 1:</b></font>、<font color=“#FF4500”><b>女人 1:</b></font>

答:

0赞 The fourth bird 8/13/2021 #1

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

然后在替换中使用组 1。

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

正则表达式演示

若要不匹配空括号,可以将模式写成:

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

正则表达式演示

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

在替换使用组 1 中使用$1

<font color="#FF4500"><b>$1</b></font>

enter image description here

评论

1赞 Hank K 8/13/2021
谢谢。。。非常感谢非常清晰的解释,绝对精彩......正是这个菜鸟需要的......再次 TY
0赞 Haji Rahmatullah 8/13/2021 #2

一如既往的短代码在下面,刚刚由我检查过,工作完美......

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