我正在学习正则表达式。
我正在尝试找到一种编写表达式的最佳方法,该表达式从字符R后面的括号内提取数字,所以:
示例1:
String("257*5.6+48.9/2*R(64)")
reg ex将返回R()中的数值,在这种情况下为64。
示例2:
String("sin(45)*55 + X^2+R(-64.525)")
reg ex将返回R()中的数值,在这种情况下为-64.525
到目前为止我的表达是:
/R\(\-?\d+\.?\d+\)/g
返回R(数字),考虑可能的小数位和负值。
是否有更好的正则表达式匹配(返回)仅在字符R后面的括号内的数字?
非常感谢您的建议/帮助。
d
答案 0 :(得分:2)
从索引1获取匹配的组
R\((-?\d+(\.\d+)?)\)
使用周围的括号来获得所需的输出:
R\(([^\)]*)
模式说明:
R 'R'
\( '('
( group and capture to \1:
[^\)]* any character except: '\)' (0 or more times)
) end of \1
尝试不使用字符串中字符的Positive Look behind,但仅在语言支持时断言是否可以匹配:
(?<=R\()[^\)]*
答案 1 :(得分:2)
如果您使用的是JavaScript之外的正则表达式引擎,则可以使用positive lookaround assertions:
/(?<=R\()-?\d+\.?\d*(?=\))/g
答案 2 :(得分:0)