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+):同上,匹配一个或多个字母、数字或下划线字符,并以捕获组的形式返回。
04-04 00:37