【问题标题】:Regular expression to match “select…from” sql queries匹配“select...from”sql 查询的正则表达式
【发布时间】:2018-07-14 07:51:16
【问题描述】:
str = "SELECT\r\n  money\r\nFROM\r\n  accounts"   

我想从str转换成

"SELECT COUNT(*) FROM accounts" 使用 ruby​​ 正则表达式。

谢谢你的帮助

【问题讨论】:

  • 请显示更多示例数据。
  • a = "SELECT\r\n device_id\r\nFROM\r\n temp.test_sets AS device_infos\r\nJOIN (\r\n SELECT\r\n google_ad_id\r\n FROM \r\n test*\r\n)
  • "SELECT COUNT(*) FROM\r\n device_id\r\nFROM\r\n temp.test_Set_20180101"
  • 我只想要 SELECT 和 FROM 之间的字符串
  • 请浏览该网站并阅读有关如何提出好问题的信息。

标签: ruby regex expression


【解决方案1】:

你可以试试这样的:(run here)

re = /(select).*?(from)[\\r\\n]*/i
str = 'SELECT\\r\\n money\\r\\nFROM\\r\\n accounts'
subst = '\\1 count(*) \\2'

result = str.gsub(re, subst)

# Print the result of the substitution
puts result

此外,如果您想在 select 和 from 之间获取任何内容,只需将捕获组放入上述正则表达式:

(select)(.*?)(from)[\\r\\n]*

这里 (.*?) 是捕获组 2,其中包含您在 selet-from 之间的内容。

Regex Demo

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多