Regex - сопоставить все слеши в строке, если слово появляется где-либо в строке - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь сопоставить все слэши / в строке, но только если строка начинается с "..

Это регулярное выражение соответствует только первому sla * sh

(?<=['|"]\.\.)(?<=.)*?/

Должно совпадать

"../a/b/c/test.aspx"
"../a/test.aspx"

Не должно

"/a/b/c/test.aspx"
../a/b/c/test.aspx

Есть идеи?

1 Ответ

1 голос
/ 22 января 2020

Notepad ++ использует механизм регулярных выражений PCRE, поэтому вы можете использовать это регулярное выражение:

(?:^"\.\.|(?!^)\G)[^/\n]*\K/

Демонстрация RegEx

Подробности RegEx:

  • (?:: запуск группы без захвата
    • ^"\.\.: сопоставление ".. в начале
    • |: ИЛИ
    • (?!^)\G: \G устанавливает позицию в конце предыдущего совпадения или в начале строки первого совпадения. (?!^) гарантирует, что мы не на начальной позиции.
  • ): Конечная группа без захвата
  • [^/]*: Совпадение 0 или более любые символы, которые не /
  • \K: сбросить всю соответствующую информацию
  • /: сопоставить /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...