gpt4 book ai didi

ruby 正则表达式无法从 sql 中删除类名

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:36 24 4
gpt4 key购买 nike

我有:

BEFORE Gsub sql :::: 

SELECT record_type.* FROM record_type WHERE (name = 'Registrars')


sql = sql.gsub(/SELECT\s+[^\(][A-Z]+\./mi,"SELECT ")


AFTER GSUB SQL ::::

SELECT record_type.* FROM record_type WHERE (name = 'Registrars')

期望的结果是删除“record_type”。来自声明:

所以应该是:

    SELECT * FROM record_type WHERE (name = 'Registrars')

运行正则表达式后。

这不是我写的,它在 asf-soap-adaptor gem 中。谁能告诉我为什么它不起作用,以及如何解决?

最佳答案

我想应该这样写...

sql = sql.gsub(/SELECT\s+[^\(][A-Z_]+\./mi,"SELECT ")

... 因为如果字段名称包含 _ (下划线)符号,问题中的代码将不匹配。我想这就是这段代码在 gem 中的原因:它可以在某些条件下工作(即,带有无下划线的字段名称)。

不过,我承认我不明白为什么要进行此替换 - 而且它不应该包括 0-9 检查(例如,'record_id1 ' 字段仍然不会被正则表达式中的字符类匹配和替换;您可能必须扩展它,例如 [0-9A-Z_],或者只需完全替换为 \w)。

关于ruby 正则表达式无法从 sql 中删除类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com