Regex находит все последние изменяющиеся строки перед каждой из уникальных строк - PullRequest
0 голосов
/ 15 января 2019

Я хочу найти регулярное выражение для этого приложения. Я искал, но не мог найти ответ, но я не эксперт по регулярным выражениям. Я постараюсь объяснить, что я хочу сделать. Я хочу, чтобы регулярное выражение нашло все последние URL перед каждой из уникальных строк

Я пытался (?! Href). * (? <= Uniquestringcontainingspecialcharacters), но программа зависает при использовании фактического HTML, может быть, потому что это намного дольше, чем мой пример здесь. </p>

В этом примере я хочу найти все последние частичные URL-адреса перед символами Uniquest, содержащими специальные символы, которых может быть много.

Как и фиктивный материал, показанный ниже, но без новых строк (добавлены новые строки, чтобы вам было проще понять, что я имею в виду), а также randomjunk, включая пробелы и specialcharacterswithouuseusefulpatern _-., <> :; "azAZ09 на самом деле случайный материал между ссылками. Существует разное количество URL-адресов и случайный мусор между интересующими меня URL-адресами:

href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/theinfoIwant/moreinfoIwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09
Uniquestringcontainingspecialcharacters
randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/randomtextandornumberthatIdontwant/morerandomtextandornumberthatIdontwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 
href="/differentinfoIwant/moredifferentinfoIwant/" randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09
Uniquestringcontainingspecialcharacters
randomjunkincludingspacesandspecialcharacterswithoutausefulpatern _-.,<>:;"azAZ09 

Так вот, я хочу получить:

/theinfoIwant/moreinfoIwant/
/differentinfoIwant/moredifferentinfoIwant/

1 Ответ

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

В основном, регулярное выражение, которое вы ищете, может быть что-то вроде

 href="[^"]*"(?=(?:(?!href=).)*Uniquestringcontainingspecialcharacters)

Где . также соответствует символу новой строки (в зависимости от языка /s флаг)

  • href="[^"]*" матчей
    • href=", за которыми следует
    • любой символ кроме " как можно большего числа, за которым следует
    • "
  • (?=...) - это предпросмотр с позиции после закрытия "
    • (?:(?!href=).)* - жадный закаленный жетон (используйте отрицательный прогноз, чтобы найти как можно больше символов, чтобы он не содержал href=)
    • Uniquestringcontainingspecialcharacters специальный токен

чуть лучше Uniquestringcontainingspecialcharacters также можно добавить в виде закаленного жадного рисунка:

href="[^"]*"(?=(?:(?!href=|Uniquestringcontainingspecialcharacters).)*Uniquestringcontainingspecialcharacters)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...