我正在使用正则表达式来解析字符串中的浮点数。
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,...]。
有什么办法可以解决这样的问题吗?
使用
re.findall(r"(?<![a-zA-Z:])[-+]?\d*\.?\d+", t)
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
它将匹配前面没有字母或冒号的整数和浮点数。
细节:
(?<![a-zA-Z:])
- 负向后查找,确保当前位置之前没有 ASCII 字母或冒号[-+]?
- 可选的+
或-
\d*
- 零个或多个数字\.?
- 一个可选的点\d+
- 1+ 位数字