Python Regex从字符串

时间:2017-02-09 16:46:23

标签: python regex

我正在使用正则表达式来解析字符串中的浮点数。

re.findall("[^a-zA-Z:][-+]?\d+[\.]?\d*", t)

是我使用的代码。这段代码有问题。如果数字和任何字符之间没有空格,则不解析数字。 例如,期望输出来自" 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9"是[0,1,2,3,4,5,6,7,8,9],但它返回" [| 1,| 2,| 3,...]。

有没有办法解决这类问题?

2 个答案:

答案 0 :(得分:3)

使用

re.findall(r"(?<![a-zA-Z:])[-+]?\d*\.?\d+", t)

请参阅regex demo

它将匹配不带字母或冒号的整数和浮点数。

<强>详情:

  • (?<![a-zA-Z:]) - 负面的背后隐藏,确保在当前位置之前没有ASCII字母或冒号
  • [-+]? - 可选的+-
  • \d* - 零个或多个数字
  • \.? - 一个可选的点
  • \d+ - 1+位数

答案 1 :(得分:1)

这里你应该做的最简单的事情就是将正则表达式的“数字”部分包装到捕获组中,然后查看这些捕获组。

re.findall("[^a-zA-Z:]([-+]?\d+[\.]?\d*)", t)

我刚刚在搜索的“数字”部分添加了括号。