RegExp dla złapania różnoformatowanego wielolinijkowca

0

Witam,

Mam w 400 plikach dopisać pozycję w kodzie HTML, przed określonym fragmentem tekstu. Problem polega na tym, że wzorzec jest raz w jednej linijce, raz podzielony na kilka linijek, raz z tabulatorami, raz bez. Próbowałem we wzorcu zastąpić wszystkie białe znaki ciągiem [\s]+ , [\s\r\n]+ (tzn. dostawałem [\s]+[\s]+[\s]+<img[\s]+cośtam[\s]+cośtam i analogicznie), jednak coś tu nie działa. Pozostałe osoby z zespołu miały RegExpy "tyle co na studiach", i rozbijają się o to samo, co i ja...

Nie proszę oczywiście o gotowy pattern, chciałbym jedynie zostać naprowadzony na właściwą ścieżkę. Będę wdzięczny za pomoc.

PS Piszę co prawda w dziale PHP, jednak nie wiem, czy na pytanie o RegExpy jest to najszczęśliwszy dział. W razie czego proszę moderatora o przeniesienie, np. do działu Newbie :)

1
  1. Potrzebujesz dobrego edytora, który pozwala na łapanie regexpem wielu linii, np notepad++
  2. "\s+" dobrze łapie podział linii (przynajmniej u mnie w notepad++)
0

Chyba znalazłem rozwiązanie - pisaniem po trochu, dzięki narzędziu http://rubular.com/r/Df2CDmwmhW z tego forum. Jak dopiszę do końca i sprawdzę to się przyznam, na czym polegał problem.

0

Problem z gatunku podręcznikowych:
-trzeba escapować znaki w środku zamienianego stringa, tj z </tr> zrobić </tr> i podobnie z nawiasami itd itp
-faktycznie, [\s]+ łapie nową linijkę bardzo dobrze.

Niestety Notepad++ nie pozwala jako "zamiennika" użyć wielolinijkowca - zastosowałem TextCrawlera.

W każdym razie dziękuję serdecznie za wsparcie i uwagę.

1
JohnyBravo napisał(a):

-trzeba escapować znaki w środku zamienianego stringa, tj z </tr> zrobić </tr> i podobnie z nawiasami itd itp
wszystko pomiędzy \Q i \E powinno być brane dosłownie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1