如何用正则表达式精准提取逗号分割SQL语句中的最后一个表名?

如何用正则表达式精准提取逗号分割sql语句中的最后一个表名?

从逗号分隔的SQL语句中精准提取最后一个表名

本文介绍如何利用正则表达式从类似 “select dt from a.b.c where dt = ‘20210808’ limit 10” 这样的SQL语句中提取最后一个表名,即使表名包含下划线,例如 a_a.b_b.c_c。 之前尝试使用PHP的preg_match_all函数未能达到预期效果,因此需要更精确的正则表达式。

挑战在于编写一个正则表达式,精确匹配以.开头,且不以.或空格结尾的字符串,从而提取最后一个表名。 之前的尝试 /.([^.]*$)/ 匹配了.之后的所有内容,包括后面的关键词。

更有效的正则表达式: (?

(?[^.s]+: 匹配一个或多个非.和空格的字符(表名)。(?=s|$): 正向肯定环视,确保匹配的字符串后面是一个空格或字符串结尾。

此正则表达式能够精确定位和提取最后一个表名,即使表名包含下划线。

对于sed,由于不支持零宽断言,需要不同的策略。 sed -n ‘s/.w+s/*****/ p’ 虽然匹配到最后部分,但会替换.和后面的空格,并非理想的提取方式。 精确的sed方案需要更复杂的命令组合,此处不再赘述。

以上就是如何用正则表达式精准提取逗号分割SQL语句中的最后一个表名?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2496358.html

(0)
上一篇 2025年3月5日 03:17:42
下一篇 2025年3月3日 10:53:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论