Я хотел бы использовать Regex, чтобы Sublime Text 3 выполнял поиск определенного экземпляра кода, но только в двух ограничивающих строках.В частности, я пытаюсь найти все запросы, которые явно не объединяют две таблицы.Например, у нас может быть следующий код:
<!--- This is a test comment with from included, a match that we would like to avoid --->
Test
<cfquery>
select test
from table1,table2
</cfquery>
Test 2
<cfquery>
select test
from table1
inner join table2
</cfquery>
Test 3
<cfquery>
select test
from table1,
table2
</cfquery>
Я бы хотел, чтобы регулярное выражение совпадало с текстом в первом блоке cfquery и текстом в третьем блоке cfquery, но не с текстом во второмблок cfquery.Сейчас у меня есть регулярное выражение:
(<[cC][fF][qQ][uU][eE][rR][yY]>)[\S\s]*?([fF][rR][oO][mM])[\S\s]*?,[\S\s]*?(<\/[cC][fF][qQ][uU][eE][rR][yY]>)
Однако это регулярное выражение соответствует первому блоку, а затем всему оставшемуся файлу, поскольку, хотя второй блок не совпадает, он не прекращает попыткисовпадать, пока не достигнет "/ cfquery" в нижней части файла.Это имеет смысл;он делает именно то, что я прошу.Но как мне попросить регулярное выражение прекратить поиск по определенному слову?
Я пытался использовать якоря ($ и ^ и \ z), но либо они не предназначены для моих нужд, либо я не используюих правильно.Я подумал, что попытка сказать регулярному выражению, что в матче не может присутствовать косая черта, может быть решением:
(<[cC][fF][qQ][uU][eE][rR][yY]>)[\S\s]*?([fF][rR][oO][mM])[\S\s]*?,[\S\s]*?([^\/]*?)(<\/[cC][fF][qQ][uU][eE][rR][yY]>)
Но это совпадает с тем, что было раньше, и я не уверен, почему.