我正在尝试从 SQL 脚本中提取表名。我有以下字符串:
from db1.tableX tbx1 --quantity table
inner join tableY tbx2 on tbx1.xyz=tbx2.xyz
我不想匹配这个字符串,因为tabley
它没有以数据库名称为前缀。我试图做到这一点的方法是在数据库名称之前的字符串中检测单词“on”。
我的正则表达式匹配tablex
但也匹配tbx1
,我不希望我的表达式匹配。
我希望它只在这种情况下匹配。
from db1.tableX tbx1 --quantity table
inner join db1.tableY tbx2 on tbx1.xyz = tbx2.xyz
我的正则表达式应该给我tableX
,tableY
因为它们以数据库名称为前缀。
这是我的表达:
(insert\s+into|from|inner\s+join|left\s+outer\s+join|join)\s+[\sa-zA-Z0-9_$#-]*\.\s*(?<table>[a-zA-Z0-9_]+)(?=\s+[a-zA-Z0-9_$#-]+)*