此问题在此处已有答案:
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
前面的括号的所有内容
我想我可能不得不使用一个积极的前瞻性或其他形式的非贪婪,但我想不出来。
1条答案
按热度按时间tquggr8v1#
适用于您的案例的正则表达式:
\(([^()]+?)\) e₂
关于懒惰:懒惰的工作原理不是这样的。懒惰修饰符改变了它所应用的组的行为,但是在你的例子中,左括号已经被匹配过了。
**编辑:**警告:这个正则表达式只适用于没有嵌套圆括号的情况。如果有嵌套圆括号,有两种选择:
1.使用类似
\([^()]+?\) e0 + \([^()]+?\) e1 + \(([^()]+?)\) e₂ + \([^()]+?\) e3
的语句解析整个表达式(如果可能)1.你试着解析表达式时考虑到圆括号的平衡。这通常不是一件容易或显而易见的任务。(有时,根据正则表达式引擎,可能是不可能的)。