正则表达式从自定义字符串中提取数字

时间:2014-10-21 07:48:56

标签: regex

我正在学习正则表达式。

我正在尝试找到一种编写表达式的最佳方法,该表达式从字符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

3 个答案:

答案 0 :(得分:2)

从索引1获取匹配的组

R\((-?\d+(\.\d+)?)\)

Online demo


使用周围的括号来获得所需的输出:

R\(([^\)]*)

Online Demo

模式说明:

  R                        'R'
  \(                       '('
  (                        group and capture to \1:
    [^\)]*                   any character except: '\)' (0 or more times)
  )                        end of \1

尝试不使用字符串中字符的Positive Look behind,但仅在语言支持时断言是否可以匹配:

(?<=R\()[^\)]*

Online demo

答案 1 :(得分:2)

如果您使用的是JavaScript之外的正则表达式引擎,则可以使用positive lookaround assertions

/(?<=R\()-?\d+\.?\d*(?=\))/g

答案 2 :(得分:0)

R\((\S+?)\)

你可以尝试一下。参见演示。

http://regex101.com/r/dK1xR4/11