我正在尝试处理一些SQL代码,以查找需要在查询中进一步分组的select语句部分。例如:
在字符串"Select person, age, name, sum(count distinct arrests) from..."
我希望返回"sum(count"
,因为它是该字符串中唯一在两边都带有空格并包含一个开放括号的部分。
我一直在尝试不同的东西,但是正在挣扎。
我已经尝试过re.compile(r'\ W。* [)]'),但是返回的次数过多或根本没有。
答案 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次以上。
(?:...)+
这将匹配(?<!\S)(?:\w+\(\w+)+(?!\S)
和COUNT(DISTINCT(case
答案 2 :(得分:0)