首页 > 解决方案 > 如何从以前的正则表达式结果中查看字符串

问题描述

正则表达式:我在文件中有如下文本,我试图从以 user_id 开头的行中获取引号内的部分。

DECLARE
   user_id    VARCHAR(1)  := 'ITSME'; -- 
BEGIN
 SELECT * FROM XXX WHERE user_id='ITSME';

我可以从下面的正则表达式获得完整的 user_id 行。

我试图获得第一部分的代码

(?i)user_id.*(?i)VARCHAR.*:=.*;

我正在尝试第二部分,我可以从上面的输出中获取引号内的字符串。

我尝试了下面的部分,我能够得到我想要的输出。

(?:(?i)user_id\s*(?i)VARCHAR.*\s*:=\s*')(.*)(?:'.*;)

但是有没有办法在没有 out 的情况下重写上面的内容?:喜欢

Look for string  insides quotes IN ((?i)user_id.*(?i)VARCHAR.*:=.*;) -- this first part regex output

PYTHON:

x = re.findall('''(?:(?i)user_id\s*(?i)VARCHAR.*\s*:=\s*')(.*)(?:'.*;)''', content)
print (x)

所以我尝试使用上面的python显示输出,它显示了我想要的结果。

有没有一种简单的方法来重写正则表达式?:

标签: pythonregex

解决方案


你可以使用

^\s*user_id(?=.*VARCHAR).+?'([^']+)'

在 regex101.com 上查看演示


推荐阅读