我正在研究一个Python函数,它解析表示SQL查询的字符串并返回数字(整数和浮点数)。我需要那些突出显示GUI中的数字。
我使用https://regex101.com/来测试我构建的正则表达式,除了number是SQL查询中列名的一部分之外,我几乎得到了它。
[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
甚至会在pop1990
中包含我想要避免的220, pop1990 in (5, 100, 7.8,25;)
。看起来我可能需要使用^
来使用否定,但不确定它是如何工作的。
搜索数字时,如果数字出现在单词字符(\w
)后面,但如果在(
,,
之前或之后仍然匹配,我该如何排除这些情况, ;
等等?
答案 0 :(得分:1)
也许这就是你要找的东西:
https://regex101.com/r/BgEP7C/1
正则表达式为(?<=[^\w])[\d\.]+
。
(?<=[^\w])
这是一个积极的背后隐藏;它检查数字背后的数字是\w
,但不会将其添加到匹配。[\d\.]+
匹配多个数字,小数点.
。 已更新,因此适用于+
,-
和e
:
链接:https://regex101.com/r/BgEP7C/5
正则表达式:(?i)(?<=[^\w])[-+]?[\d\.]+(e[-+]?\d+)?
请求编辑
由于(e[-+]?\d+)?
部分原始版本在Python中不起作用。
在Python中运行的版本:(?i)(?<=[^\w])[-+]?[\d\.]+e?[+-]?\d*