
Pokročilá úprava textu
Prosím o radu. Jak docílit následujícího? Je to možné v programu PSPad?
Textový soubor *.txt obsahuje text v cca desítkách tisíc řádků.
Cílem je automatizovaně projít veškerý text ve všech řádcích a vymazat všechny řádky které obsahují například tyto řetězce se shodnou délkou znaků.
Jedná se o řetězce délky 8 znaků **.*.***
A
01.A.001
B
01.A.008
01.A.009
C
13.E.259
D
18.G.008
E
F
Po odfiltrování a vymazání bude výsledek:
A
B
C
D
E
F
Potřebuji přepsat regulární výraz pro **.*.*** kdy hvězdička je buď číslice nebo písmeno, viz zadání dotazu. Dále si s tím snad již poradím. Pro mě je to vyšší dívčí. Nasadím buď TextCrawler nebo jiný podobný program. Děkuji všem.
[\w\w]\.[\w]\.[\w\w\w]
To je problém to najít?
https://www.regularnivyrazy.info/regularni-vyrazy-zaklady.html
V odkazu uvedené jsem četl hned včera, jak o tom padla zmínka.
Má hlava to však zatím není schopná pobrat. Tak mě prosím omluvte. Je to pro mě těžký začátek. Vytrvám.
Vyzkoušel jsem regulární výraz [\w\w]\.[\w]\.[\w\w\w] v programu TextCrawler, ale filtruje mi to pouze přes tučně zvýrazněné znaky. Ostatní asi nejsou ve výrazu zahrnuté.
Např.:
01.A.001
20.B.005
28.A.011
Jaký tedy bude správný regulární výraz, aby to skutečně odfiltrovalo kompletně celé délky řetězců?
01.A.001
20.B.005
28.A.011
Chci se to naučit. Díky za pomoc.
Asi jsem to zvoral ... tyhle \x jsou bez hranatých závorek. Takže BEZ hranatých ...
S regulárními výrazy si netykám.
Věnoval jsem ti tedy 3 minuty mého času a udělal na to program.
Program je v příloze tohoto příspěvku.
V programu klikneš na tlačítko, nalistuješ soubor a klikneš Otevřít.
Pak soubor, který chceš bude společně vedle EXE programu pojmenovaný vysledny_soubor.txt
Děláme to ve volném čase, tak by nebylo na škodu podpořit poradnu nebo tak.
V PSPadu se to dá, jdi do hledání (ne nahrazení):
Hledat: \d{2,2}\.\w\.\d{3,3}
[x]Regularní výrazy
[x]Kopírovat nenalezené
Použij tlačítko Kopírovat
Do nového dokumentu se ti zkopíruje vše, co nevyhovuje regulárnímu výrazu
{2,2} znamená počet výskytů. Dá se nahradit za \d\d
\d je číslo
\w je znak
\. je tečka - musí se escapovat lomítkem, protože je to pro regulární výrazy řídící znak
Takže bys to mohl přepsat i za:
\d\d\.\w\.\d\d\d
spíše ještě takto:
(přidán začátek a konec řádku. Případné nahrazení "ničím" vygeneruje požadovaný výsledek)
edit: nějak mi nefungoval \n, proto tam zůstal prázdný řádek
Prizivim se. PSPad 5MB log z aplikace, pokud zvolim ctrl+w (zalomit radky) neda se s tim vubec pracovat (scrollovani ma tak 3fps - strasna slideshow), bez zalomeni je to ok. Cim to?
Jak dlouhé jsou řádky? Pokud hodně dlouhé, tak to PSpad zabije
1000 znaku, nekdy i vice...
To není tak hrozné. Sice je jeden řádek na několik stránek...
uvnitř hranatých závorek se nemohou používat "characters classes" jako \w. Pokud tazatel píše **.*.*** pak je dobré to dodržet a nespekulovat, že ** jsou čísla, , * písmena, *** čísla nevymýšlet \d\d\.\w\.\d{3}