代码之家  ›  专栏  ›  技术社区  ›  Ian Oakes

.net正则表达式来检测ruby源代码中的sql select语句

  •  1
  • Ian Oakes  · 技术社区  · 7 年前

    我有一个奇怪的需求,需要解析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
    

    任何帮助这将是最感激的,因为我觉得有点卡在目前。

    0 回复  |  直到 7 年前