Regex - как мне это сопоставить? - PullRequest
0 голосов
/ 05 января 2019

Я изо всех сил старался заставить это Regex работать, но, видимо, я просто недостаточно хорош в этом: (

Regex - пытается извлечь источники

Я думал, что это сработает ... Я пытаюсь получить весь контент, где:

  1. начинается с ds: //
  2. Заканчивается либо переводом каретки, либо переводом строки

Вот и все! По сути, я собираюсь затем сделать негативный прогноз, чтобы я мог удалить весь контент, который НЕ соответствует вышеупомянутому (в Notepad ++), что позволяет выполнять поиск / замену в Regex.

Ответы [ 4 ]

0 голосов
/ 05 января 2019
  1. Поиск строк, содержащих шаблон, и отметка их
    • Меню поиска> Отметить
    • Найти что: ds://.*\R
    • check Регулярное выражение
    • Отметить галочкой строки
    • Найти все
  2. Удалить не отмеченные строки
    • Меню поиска> Закладка
    • Удалить неотмеченные строки
0 голосов
/ 05 января 2019

Вот, Эндрю:

Регулярное выражение: ds:\/\/.*

Ссылка: https://regex101.com/r/ulO9GO/2

Дайте мне знать, если возникнут вопросы.

0 голосов
/ 05 января 2019

Вы регулярное выражение (?=ds:\w+).*\r?\n? не соответствует, потому что в контенте есть ds://, а \w не соответствует прямой косой черты. Чтобы заставить ваше регулярное выражение работать, вы можете изменить его на:

(?=ds://\w+).*\r?\n? демо , которое можно сократить до ds://.*\R? демо

Обратите внимание, что вам не нужно избегать косой черты.

Если вы хотите найти и заменить, чтобы сохранить строки, содержащие ds://, вы можете использовать отрицательный прогноз:

Найти что

^(?!.*ds://).*\R?

Заменить на

оставить пустым

Объяснение

  • ^ Начало строки
  • (?!.*ds://) Отрицательный взгляд на утверждение строки не содержит ds://
  • .* Совпадение с любым персонажем 0+ раз
  • \R? Необязательная последовательность символов новой строки в юникоде, которая также соответствует последней строке, если за ней не следует новая строка

См. Демоверсию Regex

0 голосов
/ 05 января 2019

Вам не нужно добавлять спецификатор \w, чтобы искать слово после ds:// в будущем. Удаление этого и изменение окончательной спецификации с «ноль или один возврат каретки, затем ноль или один перевод строки» на «либо возврат каретки, либо перевод строки» в группе захвата должны сделать это для вас:

(?=ds:\/\/).*(?:\r|\n)

Обновление: ввод каретки или перевода строки не требуется.

Обновление 2: следующее регулярное выражение будет фактически работать для вашего предложенного варианта использования в комментариях, сопоставляя все , но шаблон, который вы описали в вопросе.

^(?:(?!ds:\/\/.*(?:\r|\n)).)*$
...