用括号选择预定义的关键字

本文关键字:关键字 预定义 选择 | 更新日期: 2023-09-27 18:12:05

我有一个文本

SMA(20, V1) > 200000 AND C1 < LowerBollingerBand(20, 2)

应用正则表达式后,我需要这样的结果

SMA(20, V1) LowerBollingerBand(20, 2)

我可以通过显式定义这些关键字来选择SMA和LowerBollingerBand,就像这样

(SMA|LowerBollingerBand)('()

但是我无法选择括号和括号之间的内容

用括号选择预定义的关键字

如果您的字符串不能嵌套平衡括号,您可以使用[^()]否定的字符类来匹配()之后的任何符号,并在')之后添加CC_5来匹配右括号:

(SMA|LowerBollingerBand)'([^()]*')

查看regex演示

:

  • (SMA|LowerBollingerBand) - SMALowerBollingerBand
  • '( - a (
  • [^()]* - 0+ ()以外的字符
  • ') - a ) .

如果有平衡嵌套的括号,使用

(SMA|LowerBollingerBand)'((?>[^()]+|(?<c>)'(|(?<-c>)'))*(?(c)(?!))')

查看这个正则表达式演示

'((?>[^()]+|(?<c>)'(|(?<-c>)'))*(?(c)(?!))')结构匹配平衡嵌套括号,请参阅此答案的描述。更多信息可以在regular-expressions.info Balancing Groups.

中找到。