我正在使用正则表达式从字符串中解析 float 。
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,...]。
有什么办法可以解决这种问题吗?
最佳答案
使用
re.findall(r"(?<![a-zA-Z:])[-+]?\d*\.?\d+", t)
参见 regex demo
它将匹配前面没有字母或冒号的整数和 float 。
详细信息:
-
(?<![a-zA-Z:])
- 否定后视,确保在当前位置之前没有 ASCII 字母或冒号 -
[-+]?
- 一个可选的+
或-
-
\d*
- 零个或多个数字 -
\.?
- 一个可选的点 -
\d+
- 1+ 位数
关于Python Regex 从字符串中获取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42142309/