我正在使用正则表达式来解析字符串中的浮点数。
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,...]。
有没有办法解决这类问题?
答案 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)
我刚刚在搜索的“数字”部分添加了括号。