使用Python和regex在SQL查询字符串中查找整数和浮点数

时间:2018-01-10 15:13:19

标签: python sql regex

我正在研究一个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)后面,但如果在(,之前或之后仍然匹配,我该如何排除这些情况, ;等等?

1 个答案:

答案 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*