You are here: PSPad forum > Bug report / Hlášení chyb > Re: nahrazovani regulernim vyrazem s podminkou "lookahead"
Posted by: vbr | Date: 2021-04-10 13:05 | IP: IP Logged
Zdravim,
pri overovani vyrazu k nahrazeni opakovanych rozdelovniku v postu:
forum.pspad.com
jsem si vsiml necekanych rozdilu mezi hledanim a nahrazenim regulernim vyrazem.
pouzil jsem upraveny text s doplnenymi spojovniky, ktere je treba nahradit za podtrzitka, prave jen v radku konkretniho tagu Name:
<Name>-a-r-ch-iv-e-ad-d2@@-@-</Name>
Reseni by bylo mozne s podminkami "lookaround", ktere vymezuji nutny (nebo zakazany) sousedni text vedle nalezu, ale nejsou do nalezu pocitany, jsou tak mozne opakovane kroky hledani.
www.regular-expressions.info
PSPad nyni lookarounds zrejme podporuje, jen s nekterymi omezenimi.
Jedna moznost by byl "lookbehind" - pred hledanym znakem - se musi nachazet <Name>a pripadne libovolne dalsi znaky:
(?<=<Name>.*)-
Zde PSPad hlasi chybu vyrazu pro vyhledavani - zrejme nepodporuje lookbehind s promenlivou delkou .* ale jen pevny rozsah, coz nektere knihovny regex maji. To je tedy zrejme ocekavane omezeni.
Nadejneji vypada "lookahead" na nasledujici zaviraci tag </Name>
-(?=.*</Name>)
Toto uz v pspadu pro vyhledavani funguje, opakovanym hledanim se nachazeji rozdelovniky na radce pred </Name>, a ne v jinych radkach.
Bohuzel ale nefunguje nahrazeni - pri zadani podrtrzitka _ do nahrazovaciho vyrazu a vyvolani nahrazeni se zobrazi spravne hlaseni - Hledany vyraz "-(?=.*</Name>)" byl nahrazen 9x
ale v textu zustanou beze zmeny puvodni rozdelovniky.
Pokud se zada rucni potvrzovani zmen, nalezy se postupne zvyraznuji, ale po potvrzeni nahrady zustanou rozdelovniky.
Mozna zpusobuje problem nulova velikost zaberu "Zero-Length Assertions", ale hledane spojovniky jsou zyraznovany spravne, jen nejsou nahrazeny.
(PSPad 5.0.6, 589; Win 7)
Zdravim a dekuju
vbr
Posted by: pspad | Date: 2021-04-10 13:16 | IP: IP Logged
Bojím se, že tohle nějak jednoduše opravit nepůjde.
Hledání funguje, ale při nahrazování s tím prostě nepočítá.
Řešením je konečně kompletně přepsat hledání/nahrazení, aby podporovalo i víceřádkové hledání apod. Zkusím si na to vyšetřit pár dnů.
Posted by: vbr | Date: 2021-04-10 14:51 | IP: IP Logged
Diky za potvrzeni,
viceradkove hledani a nahrazovani by urcite bylo vyborne, chapu, ze je to asi slozitejsi oblast mezi komponentou editoru, vyhledavaci knihovnou, navic s evidovanim zmen pro kroky zpet apod....
Zdravim,
vbr
Editor PSPad - freeware editor, © 2001 - 2024 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR