首页 > 解决方案 > 如何匹配括号外的特定单词并忽略括号中的单词?

问题描述

我正在使用 python 正则表达式来处理一个文本字符串,例如:

select t2.f1 as rf1, (select t1.f1 from table1 t1  where t1.f1 = t2.f2) as rff, t2.f3 as rf3 FROM table2 t2

上面的字符串中有两个“from”。一个在括号内,另一个在括号外。我想在第二个“来自”之前获得匹配的文本:

select t2.f1 as rf1, (select t1.f1 from table1 t1  where t1.f1 = t2.f2) as rff, t2.f3 as rf3 

我的测试 python 正则表达式是:

^\s*select\s+(?P<SELECTED>.+?)\s+from

返回:SELECTED t2.f1 as rf1, (select t1.f1

任何人都知道如何修改正则表达式以获得SELECTED t2.f1 as rf1, (select t1.f1 from table1 t1 where t1.f1 = t2.f2) as rff, t2.f3 as rf3

非常感谢你的帮助。

标签: pythonregex

解决方案


你可以用这个

^\s*select\s+(?P<SELECTED>.+?)\s+(from).*?(?=FROM)

你可以在这里尝试它找到完整的匹配 在线正则表达式

如果你知道你总是 2 选择和从

你可以用这个

^\s*select.*(from).*?(?=FROM)

你可以看到选项2


推荐阅读