Autor | Zpráva | ||
---|---|---|---|
Gray blogger Profil * |
Zdravím,
chtěl bych se zeptat jestli byste mi neporadili s napsáním regulárního výrazu. Je fakt, že PHP už nepoužívám, pracuji v Delphi, ale používám knihovnu, která používá podobná pravidla jako v PHP. Tedy konkrétní přehled přepínačů/options, které mám v té knihovně dostupný je zde: www.yunqa.de/delphi/products/regex/syntax A teď o co se snažím. Mám větu nebo několiv vět, kde se nachází závorky. Uvnitř jsou uvedené jazyky. Obrazně si to můžeme rozdělit na jednotlivé bloky oddělené znaky ;\., ... Co mě zajímá jsou ty jazyky. Před názvem jazyka i za může být string, pojmenujme ho something a končí oddělovačem: Phoenician|Assyrian|Arabic|Sabean|Ethiopic . Všechny jazyky chci smazat včetně těch řetězců co jsou mezi ním a oddělovačem. Ale problém je v tom, že jazyk Aramaic smazat nechci. Také se tam může vyskytnout tag <em>something</em> a ten taky smazat nechci. Mám tedy takovýto regex: (*UCP)([;\.,]).*?(Phoenician|Assyrian|Arabic|Sabean|Ethiopic).*?(?!Aramaic|<em>.*?</em>).*?([;\.]) Zdrojový text: SOMETHING MAY INCLUDE TAGS (Phoenician something, Assyrian something, Arabic @, Sabean , Ethiopic @ Aramaic something, @ — absolute $ 47t.; construct$; ; something $ +; $ + ( something); something $ +; something ... (<em>something</em>, Assyrian <em>KEEP THIS</em></i> Dl, AGI.) Výsledný text po záměně: SOMETHING MAY INCLUDE TAGS (Phoenician something,.;.)" (Pozn. testuju to bez toho textu co je označen jako italic, protože mi Delphi nechce pustit delší text do 'string literals'.) Co bych tedy chtěl dostat je něco takového: SOMETHING MAY INCLUDE TAGS (<em>Ethiopic @Aramaic something</em>, <em>KEEP THIS</em>)" nebo var 2. (která ale není reálná kvůli omezenosti PCRE) SOMETHING MAY INCLUDE TAGS (Aramaic something (<em>something</em>, <em>KEEP THIS</em>)" Oprava: Co bych tedy chtěl dostat je něco takového: SOMETHING MAY INCLUDE TAGS (Ethiopic @Aramaic something, <em>KEEP THIS</em>)" |
||
Časová prodleva: 6 let
|
0