VS Regex, чтобы "Найти все", игнорируя пробелы и новые строки - PullRequest
3 голосов
/ 11 мая 2019

Я использую окно Visual Studio «Найти и заменить» для поиска следующего шаблона с помощью регулярных выражений: INNER JOIN T2, игнорируя при этом любые пробелы или новые строки. Здесь - это тестер .NET, который на самом деле работает, как и ожидалось.Однако причина, по которой это работает, заключается в том, что я установил флажок « Singleline », расположенный справа.

В Visual Studio этот Regex не работает и сопоставляет результаты только в одной строке,Как я могу воспроизвести то, что делает флажок «Singleline»?

Вот шаблон Regex, связанный выше:

(inner)(?([^\r\n])\s).*(join)(?([^\r\n])\s).*(T2)

А вот вход, который работает, только когда флажок Singleline установлен, хотя Visual Studio не имеет такого флажка.

SELECT * FROM T1 INNER    join
   T2 ON...

РЕДАКТИРОВАТЬ

Чтобы дать контекст вопросу (если он еще не выяснен), цель состоит в том, чтобызаменить эти INNER JOIN на LEFT OUTER JOIN из-за структурных изменений, внесенных в таблицы T1 и T2

1 Ответ

3 голосов
/ 11 мая 2019

Это регулярное выражение должно соответствовать:

inner(\r\n)*\s+join(\r\n)*\s+T2

Выражение замены может быть LEFT OUTER JOIN T2

Пояснение:

  • inner - соответствует тексту 'inner'
  • (\r\n)*\s+ - сопоставить любое количество разрывов строк (включая отсутствие) и хотя бы один пробел
  • join - сопоставить текст «join»
  • (\r\n)*\s+ - сопоставить любое количество разрывов строк (включая отсутствие) и хотя бы один пробел
  • T2 - соответствует тексту 'T2'

Редактировать: как указано в комментариях, это простое и элегантное регулярное выражение делает то же самое:

inner[\s\r]+join[\s\r]+T2

Пример:

Найти:

enter image description here

После замены:

enter image description here

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