我有一个奇怪的需求,需要解析Ruby文件,在C#中查找SQL SELECT语句。我认为regex是比手动解析文件更好的解决方案,但现在我有两个问题;)。在Ruby中声明字符串(因此是SQL语句)的许多方法中都会遇到困难。
https://www.techotopia.com/index.php/Ruby_Strings_-_Creation_and_Basics
我已经取得了很好的进展,但是有一个案子我有点纠结。
比如正则表达式
(?:<<~)?"?(\w*|%{|")?"?\s*(SELECT[\s\S]*)(?=}|"|\1)
希望在第三个捕获组(即。
SELECT user, name
FROM users
WHERE users.id = 2
上面的正则表达式捕获了
<<~"sqlHeredocDelimiter"
SELECT user, name
FROM users
WHERE users.id = 2
sqlHeredocDelimiter
# some other text selecting nothing
和
sqlVariable = %{
SELECT user, name
FROM users
WHERE users.id = 2
}
# some other text selecting nothing
然而
sqlVariable = "SELECT user, name FROM user where users.id = 2"
# some other text selecting nothing
任何帮助这将是最感激的,因为我觉得有点卡在目前。