Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

AjLovLajf

Wyrażenia regularne - jak to zrobić? ...

Rekomendowane odpowiedzi

Witam... Otóż mam pewien kod HTML który jest podzielony przez "&nbsp" oraz "<br>"... I co zrobić, żeby wzięło mi wszystko, oprócz właśnie tych &nbsp oraz <br>? Próbowałem różnie i żaden sposób nie działa...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie podałeś ani próbki, ani co chcesz z tym zrobić. Kod HTML powinieneś parsować jako DOM.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisz, co chcesz zrobić, bo prawdopodobnie źle się za to zabierasz. Wybieranie wszystkiego bez czegoś regexem to jest upierdliwa sprawa. Zgaduję, że chcesz powywalać tagi <br></br> i encje  . Wtedy lepiej jest je wybrać i zastąpić pustym stringiem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
' date='03 Październik 2017 - 15:59' timestamp='1507042764' post='14820974']

Napisz jakich próbowałeś i co z tego wyszło.

 

Szczerze, to moje próby najprawdopodobniej nie trzymały się kupy. Widziałem wiele różnych artykułów i filmów na temat wyrażeń regularnych, ale w żadnych nie było, jak brać wszystko, oprócz konkretnego ciągu... Moje próby:

(.*[^&nbsp|<br>].*)

(^&nbsp<br>) (wiem, że to by nie zadziałało)

(.*^&^n^b^s^p^<^b^r^>.*) (wiem, głupie...)

i wiele więcej. Zawsze znajdowało mi cały tekst, albo wgl go nie znajdowało...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

/\<br\>/Ui

/\<br\/\>/Ui

/\<br \/\>/Ui

(regułki da się połączyć, | robi za "lub", do tego biały znak między br a /, nie pamiętam oznaczenia, ale .* też powinno się sprawdzić), U - ungreedy, i - wielkość liter bez znaczenia

 

/\&nbsp\;/Ui

to do niełamliwych spacji

 

jedno i drugie zamień na spacje

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale w ten sposób wyszukasz taki br i encje nbsp, a chodzi o to, by wyszukać wszystko poza nimi. Wg mnie to nie jest proste. Kombinowałbym z negative lookahead albo czymś podobnym.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisz, co chcesz zrobić, bo prawdopodobnie źle się za to zabierasz. Wybieranie wszystkiego bez czegoś regexem to jest upierdliwa sprawa. Zgaduję, że chcesz powywalać tagi <br></br> i encje  . Wtedy lepiej jest je wybrać i zastąpić pustym stringiem.

Dokładnie, nie ma sensu się z tym użerać przy użyciu wyrażeń regularnych.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze to wyrażenie definiuje zbiór ciągłych napisów - nie można zrobić tekstu z "dziurami", można co najwyżej zrobić wyrażenie, które dopasuje się do pojedynczego fragmentu "nie do wycięcia" lub ew dłuższe wyrażenie, którego pewne podgrupy dopasują się do listy nie do wycięcia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze to wyrażenie definiuje zbiór ciągłych napisów - nie można zrobić tekstu z "dziurami", można co najwyżej zrobić wyrażenie, które dopasuje się do pojedynczego fragmentu "nie do wycięcia" lub ew dłuższe wyrażenie, którego pewne podgrupy dopasują się do listy nie do wycięcia.

 

A więc jak inaczej można by było to zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Witam... Otóż mam pewien kod HTML który jest podzielony przez "&nbsp" oraz "<br>"... I co zrobić, żeby wzięło mi wszystko, oprócz właśnie tych &nbsp oraz <br>? Próbowałem różnie i żaden sposób nie działa...

A nie prościej po prostu otworzyć np. w notepad++ i usunąć stamtąd wszystkie "&nbsp" oraz "<br>" ?

 

Czy chcesz to robić dynamicznie gdzieś na stronie itp?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najprościej zrobić tak jak napisał Karister (nie wierzę, że mi to przez klawiaturę przeszło), napisac wyrazenie odwrotne, tzn wyszukujące br-y i twarde spacje i zastapić je pustum ciągiem. Przykładowe wyrażenie może wyglądać np. tak:

<br(\w*/)?>|&nbsp ;

Tylko używać z opcja ignorowania wielkości znaków, bo HTML jest na nie niewrażliwy.

______________

Edit, musiałem dać spacje przed średnikiem bo upośledzony labowy edytor zamienia &nbsp, a nie pozwala użyć &

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

<br(\w*/)?>

Brakuje jeszcze wyescapowania dla slasha. Poza tym nadal masa rzeczy może pójść nie tak. Bo można <br>, <br/> albo <br />. Oraz najczarniejszy scenariusz - atrybut class, id lub coś jeszcze lepszego. Wtedy kończy się taką kichą: https://regex101.com/r/kJ2bbP/1. A jeśli ktoś wpadł na pomysł, żeby przed albo po znaku = dodać spację, to... :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Brakuje jeszcze wyescapowania dla slasha. Poza tym nadal masa rzeczy może pójść nie tak. Bo można <br>, <br/> albo <br />. Oraz najczarniejszy scenariusz - atrybut class, id lub coś jeszcze lepszego. Wtedy kończy się taką kichą: https://regex101.com/r/kJ2bbP/1. A jeśli ktoś wpadł na pomysł, żeby przed albo po znaku = dodać spację, to... :D

 

Ale po co by ktoś dawał id do br'a?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Id to po nic, ale class się nada, żeby złapał go CSS. Na przykład aby dać mu clearfix dla starych przeglądarek albo ustawić display na none lub block w zależności, czy strona wyświetlona jest na kompie czy telefonie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...