Как использовать регулярные выражения в .net для обнаружения операторов выбора SQL в исходном коде ruby - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть странное требование для анализа файлов Ruby в поисках операторов SQL SELECT в C #.Я подумал, что регулярное выражение будет лучшим решением, чем анализ файла вручную, но теперь у меня есть две проблемы;).Трудность возникает во многих отношениях для объявления строки, поэтому оператор SQL в Ruby.

https://www.techotopia.com/index.php/Ruby_Strings_-_Creation_and_Basics

Я добился хорошего прогресса, однако я немного застрял в одном случае.

Например, регулярное выражение

(?:<<~)?"?(\w*|%{|")?"?\s*(SELECT[\s\S]*)(?=}|"|\1)

ищет захват оператора SQL в третьей группе захвата, т.е.

SELECT user, name
FROM users
WHERE users.id = 2

Вышеупомянутое регулярное выражение захватывает оператор SQL в

<<~"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

Будет продолжать захват до конца комментария в следующей строке, а не только захват требуемогоОператор SQL.

Любая помощь по этому вопросу будет наиболее ценной, поскольку я чувствую себя немного застрявшим в данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...