Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为具有重复实例的子字符串定义正则表达式模式时出现问题_Python_Sql_Regex - Fatal编程技术网

Python 为具有重复实例的子字符串定义正则表达式模式时出现问题

Python 为具有重复实例的子字符串定义正则表达式模式时出现问题,python,sql,regex,Python,Sql,Regex,我对RegEx比较陌生,一直在阅读各种教程,但很难理解如何组合我需要的模式 目前,我有一个SQL字符串,其中包含此模式的重复实例: ,coalesce(column1,null) AS table_name.column1 table\u name可以是任何名称,因为整个SQL代码中涉及多个表。我试图做的是从该模式的每次出现中消除表\u name。我在想,只要我能将的位置识别为和,那么中间的字符就可以替换为“” 我的方法会不正确吗?我只会对以下内容进行全局替换: \bAS\s*\S+?\.(\

我对RegEx比较陌生,一直在阅读各种教程,但很难理解如何组合我需要的模式

目前,我有一个SQL字符串,其中包含此模式的重复实例:

,coalesce(column1,null) AS table_name.column1
table\u name
可以是任何名称,因为整个SQL代码中涉及多个表。我试图做的是从该模式的每次出现中消除
表\u name
。我在想,只要我能将
的位置识别为
,那么中间的字符就可以替换为“”


我的方法会不正确吗?

我只会对以下内容进行全局替换:

\bAS\s*\S+?\.(\S+)
并使用第一个捕获组作为替换

示例脚本:

inp = ",coalesce(column1,null) AS table_name.column1"
out = re.sub(r'\bAS\s*\S+?\.(\S+)', '\\1', inp)
print(out)
这张照片是:

,coalesce(column1,null) column1
请注意,这个正则表达式搜索相当健壮,因为SQL中的
as
关键字主要用于标记别名。

这对您有用吗?