Python正则表达式从字符串中获取浮点数

Bry*_* K. 4 python regex

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

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

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

有什么办法可以解决这样的问题吗?

Wik*_*żew 5

使用

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

请参阅正则表达式演示

它将匹配前面没有字母或冒号的整数和浮点数。

细节

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

  • 尝试 [`(?&lt;![a-zA-Z:])[-+]?\d*\.?\d+(?![a-zA-Z0-9])`](https://regex101 .com/r/zR69YT/1)。或者 [`(?&lt;![a-zA-Z:])[-+]?\d*\.?\d+\b`](https://regex101.com/r/rn5vec/1)。 (2认同)