【发布时间】:2018-08-01 12:25:50
【问题描述】:
我有一个问题:
select a.id, a.nama, b.alamat from tsql as a join tswl as b on a.id = b.id join tscl as c on a.id=c.id
使用正则表达式,我只想从查询字符串中获取 表名。
我尝试使用正则表达式:
select.*from\s+(\w+).*join\s(\w+).*
它设法在“from”之后获得了第一个表名,但跳过了第二个表名,并获得了第三个表名。
当前组:
[第 1 组:“tsql”,第 2 组:“tscl”]
目标群体: [第 1 组:“tsql”,第 2 组:“tswl”,第 3 组:“tscl”] 以此类推,直到链连接查询的姓氏
我们将不胜感激!
【问题讨论】:
-
您无法在结果中获得 3 个组,因为正则表达式中只有 2 个捕获组。您需要匹配您可以匹配的内容,然后拆分。或者,使用可选组,例如
select.*from\s+(\w+)(?:.*?join\s(\w+))?(?:.*?join\s(\w+))?,您可以根据需要重复多次。
标签: javascript mysql sql regex