У меня есть странное требование для анализа файлов 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.
Любая помощь по этому вопросу будет наиболее ценной, поскольку я чувствую себя немного застрявшим в данный момент.