You are here: PSPad forum > České diskuzní fórum > Automatické doplňování pevných mezer

Automatické doplňování pevných mezer

Goto Page: Previous1 2 3

#21 Re: Automatické doplňování pevných mezer

Posted by: vbr | Date: 2020-06-16 17:46 | IP: IP Logged

Rybka:
Nějakým způsobem jsem se prokousala tím, že je třeba rozepisovat jednotlivé možnosti velkých a malých textů včetně případů, kdy tam může a nemusí být tečka. Ale poslední věci na čem mám zásek je tento výraz:
(?![^<]*>)(?<=[a-z]+)\s(?=s\.\sr\.\so\.)|(?![^<]*>)(?<=.*\ss\.)\s(?=r\.\so\.)|(?![^<]*>)(?<=.*\ss\.\sr\.)\s(?=o\.)

Živá ukázka

V PSPadu se to do konvertoru musí rozepsat na jednotlivé řádky, to je jasné, ale jakmile se to rozepíše, a spustí nahrazování, nahradí se pouze jedna mezera a další to vynechá, protože už další pravidla neplatí kvůli absenci bílé mezery, která je v tu chvíli nahrazena. Je nějaká možnost, jak tento regulár napsat jinak, aby hned v jednom výrazu našel všechny mezery, aby se to nemuselo rozepisovat na všechny možnosti (jestli počítam dobře, tak by se jinak muselo rozepsat 3×4 možností + další možnosti na velké a malé znaky)?

Dokáže vůbec regulár najít více takto oddělených znaků?

Zdravim,
musim priznat, ze konvertory v PSPadu moc nepouzivam, ale pokud spravne chapu zamer tehle konverzni upravy a u konvertoru neni vyuziti regulernich vyrazu nejak odlisne od bezneho hledani a nahrazovani v dialogu, melo by byt mozne nahrazeni provest primo najednou pro "s.r.o." s variacemi v mezerach s tim, ze hledany i nahrazovany retezec bude primo obsahovat i pozadovana pismena a tecky (nejenom mezery s podminkami na nasledujici pismena dotycne zkratky). Tenhle konverzni radek se stejne diky "lookarounds" jevi jako jednoucelovy, snad by slo hledane fraze najit a nahradit rovnou.
(nevim, jestli muze byt problem velikost pismen - v beznem uzu to asi budou vzdy mala pismena, resp. vsechna velka pri uziti verzalek, pokud bude treba velikost pismen zachovat i v jinych kombinacich, asi bude treba je rozepsat jednotlive; tohle ale ve vychozim vyrazu zrejme zachyceno neni.
Vyse uvedene omezeni na fixni delku nalezu se tyka "lookbehind assertion" - napr. (?<=...) - pokud obsahuji kvantifikatory * + , v dane knihovne regexp fungovat nebudou.
Pokud by se konverzni radek nastavil primo na retezec (mimo "lookbehind"), takove omezeni by se ho netykalo.

Zdravim,
vbr

Edited 1 time(s). Last edit at 2020-06-16 17:47 by vbr.

Options: Reply | Quote | Up ^


Goto Page: Previous1 2 3





Editor PSPad - freeware editor, © 2001 - 2020 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR