Python正则表达式可查找字符串中包含逗号的任何单词

时间:2019-05-16 15:44:25

标签: python sql regex

我正在尝试处理一些SQL代码,以查找需要在查询中进一步分组的select语句部分。例如:

在字符串"Select person, age, name, sum(count distinct arrests) from..."

我希望返回"sum(count",因为它是该字符串中唯一在两边都带有空格并包含一个开放括号的部分。

我一直在尝试不同的东西,但是正在挣扎。

我已经尝试过re.compile(r'\ W。* [)]'),但是返回的次数过多或根本没有。

3 个答案:

答案 0 :(得分:1)

使用模式(\w+\(\w+)\s+

例如:

import re

s = "Select person, age, name, sum(count distinct arrests) from..."
print(re.search(r"(\w+\(\w+)\s+", s).group(1))

输出:

sum(count

答案 1 :(得分:0)

如果匹配项也可能出现在字符串的开头,则可以使用环视方法断言左侧的内容,而右侧不是非空格字符\S,并使用重复组{{1 }}匹配1次以上。

(?:...)+

Regex demo

这将匹配(?<!\S)(?:\w+\(\w+)+(?!\S) COUNT(DISTINCT(case

答案 2 :(得分:0)

使用valuesplit()

非正则表达式方式如何?
list-comprehension

工作演示: https://rextester.com/ZKJU83182