select 括号内的所有字符的正则表达式,前提是存在等号

regex to select all characters enclosed by parenthesis provided equals sign is present

我正在使用以下正则表达式 select 任何用括号括起来的字符串:

/\(([^()]+)\)/g

但是,我想 select 仅当字符串中存在等号时,例如:

(28%) - 未 selected

(A = 28%) - selected

这可能吗?

正如@Wiktor 提到的 /\(([^()]*=[^()]*)\)/g 可以解决您的问题,

https://regex101.com/r/0lmEcb/1

可以通过 Look-Head 断言在编程语言

中像 if 一样工作

\(.*(?==).*?\)


look-head是(?=),你可以在=符号后插入你想要的。它是正则表达式的一部分,而不是常规的等号。所以你需要 (?==) 在你的代码中。就是这样。

demo

要添加到 Wiktor 的评论和 RaR 的回答中,* 也将匹配这些情况:(=28%)(A=),您可能不希望这样。您可以使用 + 来确保 =.

两边都有字符
\([^(]+=[^)]+\)

演示:https://regex101.com/r/0lmEcb/2