Autor | Zpráva | ||
---|---|---|---|
radekt Profil |
Dobrý den, procházel jsem tuto diskusi a jiné stránky zabývající se regulárními výrazy, ale nedaří se. Provádím čištění kódu a potřebuji (mimo jiné) vyhledat prázdné tagy, takže např.
<div></div>, <div> </div>, <div> </div>, <div id="abc"> </div> <div> </div> <div.*>\s*</div> , by mohl splňovat to, co potřebuji. Najde ale vše kromě prázdného divu na více řádcích.
|
||
maks Profil |
#2 · Zasláno: 27. 11. 2013, 15:21:52
radekt:
ještě ti tam chybí na správných místech "?", tedy nepovinnost daného znaku (příp. sady znaků). Ve tvém případě <div.*?>\s*?</div>
|
||
radekt Profil |
#3 · Zasláno: 27. 11. 2013, 15:32:00
maks:
Upraveno. Tak jako tak se to chová stejně. Na www.regularnivyrazy.info/shrnuti-syntaxe.html se píše, že \s odpovídá bílému znaku (\n, \r, \t, mezera aj.), tak by to mělo znamenat, že s hvězdičkou bude hledat, dokud nenarazí na koncový tag, ale není to tak. |
||
juriad Profil |
#4 · Zasláno: 27. 11. 2013, 15:35:40
Ukázka:
$str = '<div></div>, <div> </div>, <div> </div>, <div id="abc"> </div> <div> </div>'; preg_match_all('~<div[^>]*>\s*</div>~', $str, $out); var_dump($out); array(1) { [0]=> array(5) { [0]=> string(11) "<div></div>" [1]=> string(12) "<div> </div>" [2]=> string(12) "<div> </div>" [3]=> string(21) "<div id="abc"> </div>" [4]=> string(14) "<div> </div>" } } |
||
radekt Profil |
juriad:
Tento výraz mi nenašel ani řádkové tagy. Ještě upřesním - čištění kódu dělám v PSPadu, kde chci takovéto věci hledat a hromadně mazat. Dal jsem otázku do této diskuse, protože zde se reg. výrazy nejvíce řeší, snad jsem neudělal chybu. Plus těch variant, jak takový prázdný tag s bílými místy může vypadat, kolik bílého místa může obsahovat, může být mnohem více. |
||
juriad Profil |
#6 · Zasláno: 27. 11. 2013, 15:47:41
Aha, regulární výraz v PSPadu je něco jiného než regulární výraz v PHP. Bohužel PSPad nemám, nepomohu.
Je však možné, že regulární výrazy v PSPadu jsou omezené na jediný řádek a víceřádkové výrazy tedy nelze napsat. |
||
Davex Profil |
#7 · Zasláno: 27. 11. 2013, 19:31:17
V PHP se standardně nepovažuje znak konce řádku za bílý znak, ale za konec textu a více řádků se zpracovává jednotlivě řádek po řádku. Mohl by se hodit modifikátor
m .
~<div[^>]*>\s*</div>~m |
||
radekt Profil |
#8 · Zasláno: 28. 11. 2013, 07:31:21
Davex:
Také tento výraz nenašel ani řádkové tagy. Ale děkuji moc za ochotu. Ještě se zkusím poptat na PSPad fóru nebo autora programu, zda PSPad nemá reg. výrazy omezené na jeden řádek, jak píše juriad, případně, jak program zachází s koncem řádku. Ještě jednou děkuji. |
||
Časová prodleva: 10 let
|
0