Problém s regulárními výrazy

5 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Mám problém s regulárními výrazy. Potřebuju udělat skript, který by z textu (zdrojový kód nějaké www stránky) odstranil tagy <script></script> a všechno, co je uvnitř. Když zadám reg. výraz "<script[^>]*>.*</script>", tak to smaže všechno, co je mezi prvním "<script>" a posledním "</script>" ve zdrojáku. Takže pokud mám na stránce víc skriptů a mezi nimi nějaké to HTML, tak o tohle HTML prostě přijdu. Podle mě by se to dalo řešit tak, že bych nějak řekl, že nechci úplně libovolné znaky (to je to ".*" ve výrazu), ale že se v tomto úseku nesmí vyskytovat výraz "</script>". Jenže nevím, jak na to... :-( Zkoušel jsem něco jako (^(</script>))*, ale nefungovalo mi to. Nevíte někdo, co s tím?
  2. try this : <script[^>]*>([^<]{1}[^/]{1})*([^<]?)</script>
  3. Díky, ale tohle bohužel funguje jenom napůl. Neporadí si to s Javascriptama, uvnitř kterých je "<" (což je docela často - při porovnávání). Taky to nezvládá HTML komentáře uvnitř skriptů (a ty se tam používají docela často - kvůli nižším prohlížečům).
  4. tak to se nedá svítit.. Fakt nevím. leda takhle: <script[^>]*>(([^</]*)((<[^/]{1})|(/[^<]{1}))([^</]*))*</script> todle by snad jít mělo...
  5. Nevím, zkouším to, ale pořád mi to nějak nejde (aspoň ne tak, jak bych čekal). Ale vyřešil jsem to jinak. Nahradím "</script>" jedním znakem (třeba §), který ale předtím z dokumentu odstraním (jde mi totiž stejně jenom o text, takže tento znak by pro mě neměl význam). A vyloučit jeden znak reg. výrazem už není problém. V každým případě díky za pomoc.

← Zpět na všechna témata