如何提取紧跟特定字符串的括号内字符?正则表达式求助
提取指定括号内表达式的正则解决方案
问题场景
给定字符串:
(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₂前右括号的所有无关内容,无法得到目标结果。
原因分析
非贪婪模式(.+?)会从第一个左括号开始匹配,只要后续能找到) e₂就会停止,导致跨括号捕获了前面的内容。
解决方案
使用否定字符集限制匹配范围,确保只匹配单个括号内的内容:
\(([^)]+)\) e₂
[^)]+表示匹配任意非右括号的字符,这样正则会从距离e₂最近的左括号开始匹配,直到遇到对应的右括号为止,精准捕获目标内容。
验证效果
用上述正则匹配目标字符串时,捕获组1将准确返回left.e2_coefficient*right.Scalar。
内容的提问来源于stack exchange,提问作者TheHelpfulHelper
相关产品推荐
相关产品推荐

