regex 如何获取紧跟在特定字符串后面的一对括号内的字符?[duplicate]

yhuiod9q  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(109)

此问题在此处已有答案

Regular Expression to get a string between parentheses in Javascript(10个答案)
17小时前关门了。
我的字符串看起来像这样:

(left.e0_coefficient*right.Scalar) e₀ + (left.e1_coefficient*right.Scalar) e₁ + (left.e2_coefficient*right.Scalar) e₂ + (left.e3_coefficient*right.Scalar) e₃

我想得到e =〉left.e2_coefficient*right.Scalar前面的括号中的表达式
我尝试使用\((.+?)\) e₂,但是尽管它很懒惰(非贪婪),捕获组仍然包含从字符串中的第一个括号到e =〉left.e0_coefficient*right.Scalar) e₀ + (left.e1_coefficient*right.Scalar) e₁ + (left.e2_coefficient*right.Scalar前面的括号的所有内容
我想我可能不得不使用一个积极的前瞻性或其他形式的非贪婪,但我想不出来。

tquggr8v

tquggr8v1#

适用于您的案例的正则表达式:\(([^()]+?)\) e₂
关于懒惰:懒惰的工作原理不是这样的。懒惰修饰符改变了它所应用的组的行为,但是在你的例子中,左括号已经被匹配过了。

**编辑:**警告:这个正则表达式只适用于没有嵌套圆括号的情况。如果有嵌套圆括号,有两种选择:

1.使用类似\([^()]+?\) e0 + \([^()]+?\) e1 + \(([^()]+?)\) e₂ + \([^()]+?\) e3的语句解析整个表达式(如果可能)
1.你试着解析表达式时考虑到圆括号的平衡。这通常不是一件容易或显而易见的任务。(有时,根据正则表达式引擎,可能是不可能的)。

相关问题