使用正则表达式从字符串中解析数字

时间:2014-07-30 16:29:07

标签: regex numbers integer trailing

我有数千条包含数字的文章说明。

他们看起来像是:

ca.2760h3x1000.5DIN345x1500e34

结果数字应为:

  1. 2760
  2. 1000.5
  3. 1500
    • h3或3不应该是解析的结果,因为h3仅是公差
    • 同样适用于e34
    • DIN345是一个需要排除的标准(每个带有DIN或BN的数字)

    我目前的REGEX是:

    • [^ hHeE]([ - +]([0-9] + \ [0-9] +?|。[0-9] +))

    这解决了一切但规范。如何将这个“DIN”和“BN”与单个角色一样对待?

    Thanx,TomE

2 个答案:

答案 0 :(得分:0)

如果我们可以假设数字总是四位数,则可以使用正则表达式:

    (\d{4}\.\d+|\d{4})

DEMO

根据您使用\d替换[0-9]所需的语言。

答案 1 :(得分:0)

尝试使用此正则表达式:

(?<=x)[+-]?0*[0-9]+(?:\.[0-9]+)?|[+-]?0*[0-9]+(?:\.[0-9]+)?(?=h|e)

看起来你想要匹配的测试用例中的每个数字都应该以x开头。

这就是正则表达式的第一部分匹配的内容。 (?<=x)[+-]?0*[0-9]+(?:\.[0-9]+)?

正则表达式的第二部分与h或e之前的数字匹配。 [+-]?0*[0-9]+(?:\.[0-9]+)?(?=h|e)

正则表达式中的两个部分[+-]?0*[0-9]+(?:\.[0-9]+)?是匹配数字。