1、场景
2、代码
ty、asd、kl。
可以使用以下正则表达式进行匹配:
复制
import re
a = "delete from xmp.sfa_da where id = 2 where asdf=233 where df=24"
b = "delete from xmp.sfa_da where ty = 2 where asd=233 where kl=24"
pattern = r'where\s+(\w+)'
a_result = re.findall(pattern, a)
b_result = re.findall(pattern, b)
print(a_result) # ['id', 'asdf', 'df']
print(b_result) # ['ty', 'asd', 'kl']
解释一下这个正则表达式:
where:匹配where关键字
\s+:匹配一个或多个空格
(\w+):匹配一个或多个字母、数字或下划线,括号表示提取该部分内容
通过re.findall()函数可以提取出所有匹配的内容,并返回一个列表。
1、场景
2、代码
import re
a = "delete from xmp.sfa_da where id = 2 and asdf=233 and df=24"
b = "delete from xmp.sfa_da where ty = 2 where asd=233 where kl=24"
where_pattern = re.compile(r'(where|and)\s*(\w+)\s*=\s*(\w+)')
a_matches = re.findall(where_pattern, a)
b_matches = re.findall(where_pattern, b)
a_values = [match[1] for match in a_matches]
b_values = [match[1] for match in b_matches]
print(a_values) # ['id', 'asdf', 'df']
print(b_values) # ['ty', 'asd', 'kl']
正则表达式解释:
(where|and):匹配 where 或 and。
\s*:匹配 0 个或多个空白字符。
(\w+):匹配一个或多个字母、数字或下划线字符,并以捕获组的形式返回。
\s*=\s*:匹配等号两边可能存在的空白字符。
(\w+):同上,匹配一个或多个字母、数字或下划线字符,并以捕获组的形式返回。