正则表达式匹配“select ... from”sql查询

时间:2018-02-04 07:53:33

标签: ruby regex expression

str = "SELECT\r\n  money\r\nFROM\r\n  accounts"   

我想从str转换为

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

谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:(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之间得到任何东西,那么只需将捕获组放入上面的正则表达式:

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

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

Regex Demo