Jak wyszukać wystąpienia ciągu wyrażeniem regularnym?

0

Cześć, nie za bardzo ogarniam wyrażenia regularne.

Bawię się z tym od rana, ale coś nie mogę znaleźć odpowiedniej metody. Podpowie ktoś jak z poniższego stringu:

aaa <span><img alt="😁" src="..."><span> bbb <span><img alt="😁" src="..."></span> ccc

uzyskać wynik:

aaa 😁 bbb 😁 ccc
1
const input = 'aaa <span><img alt="😁" src="..."></span> bbb <span><img alt="😁" src="..."></span> ccc';

const output = input.replace(/<span><img[^>]+alt="([^"]+)"[^>]+><\/span>/g, '$1');

console.log(output);
2

Klasyka

https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454

Obleć po prostu całe drzewo DOM i zrzuć do stringa zawartość wszystkich wierzchołków typu TextConent i atrybutów alt w <img>.

1
catshy napisał(a):

Cześć, nie za bardzo ogarniam wyrażenia regularne.

Ale czego dotyczy ten temat? Chcesz się nauczyć robić wyrażenia regularne czy chcesz podmienić coś w HTMLu? XD

Wyrażenia regularne są jak śrubokręt - mogą być przydatnym narzędziem. Można ich użyć do zrobienia czegoś w prosty sposób, co będzie działać. Jednak trzeba wyczuć moment, kiedy bawienie się regexpami to zły dobór narzędzia i opóźnia cię, zamiast ułatwiać. A manipulacja HTMLem za pomocą regexpów to jak używanie śrubokręta do otwierania drzwi, do których masz klucze.

Takimi kluczem może być po prostu operowanie na drzewie DOM (jak już @szatkus1 wspomniał) zamiast na stringach.

Możesz też użyć zewnętrznego parsera (np. biblioteka cheerio https://www.npmjs.com/package/cheerio ). Ten sposób ci nawet w Node.js zadziała.

4
catshy napisał(a):

Cześć, nie za bardzo ogarniam wyrażenia regularne.

Bawię się z tym od rana, ale coś nie mogę znaleźć odpowiedniej metody. Podpowie ktoś jak z poniższego stringu:

aaa <span><img alt="😁" src="..."><span> bbb <span><img alt="😁" src="..."></span> ccc

uzyskać wynik:

aaa 😁 bbb 😁 ccc

Nie używaj wyrażeń regularnych do parsowania HTMLa.

0
Riddle napisał(a):

Nie używaj wyrażeń regularnych do parsowania HTMLa.

Zgadzam się tylko dobrze by było jeszcze dopisać OPowi "używaj dedykowanych parserów do HTMLa". No chyba że jest to jakieś dziwne zadanie ćwiczebne :D

1
KamilAdam napisał(a):

No chyba że jest to jakieś dziwne zadanie ćwiczebne :D

Są lepsze ćwiczenia do regexpów - HTML to nigdy nie jest dobry pomysł :D

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