Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: asdqewqoieu 28. 06. 2018, 07:40:12

Název: Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: asdqewqoieu 28. 06. 2018, 07:40:12
Ahojte,

nasiel som (zrejme) dobru stranku s vysvetlenim regexpov (https://github.com/zeeshanu/learn-regex) a chcel by som ich testovat a naucit sa ich pocas mojho cestovania ked som offline.

Co na to odporucate?
Pouzivam Fedoru.

Vopred dakujem.
Název: Re:Ako testovat regexp v linuxe bez internetoveho pripojenia?
Přispěvatel: Lol Phirae 28. 06. 2018, 08:07:32
Jak uvařit guláš bez soustruhu?  :o ???
Název: Re:Ako testovat regexp v linuxe bez internetoveho pripojenia?
Přispěvatel: Franta <xkucf03/> 28. 06. 2018, 08:25:59
Vždycky mne fascinují lidé, kteří si myslí, že k naformátování XML, JSONu nebo třeba otestování regulárního výrazu potřebují nějakou webovou stránku a připojení k internetu – a nejsou schopní používat nástroje, které mají na svém počítači. Takže dobře, že se ptáš, nebude to tvůj případ.

Už v terminálu máš příkaz grep, který filtruje řádky ze vstupu podle regulárního výrazu:

Kód: [Vybrat]
$ echo -e 'ahoj\nnazdar'
ahoj
nazdar

$ echo -e 'ahoj\nnazdar' | grep -E 'h.*'
ahoj

Pro nahrazování textu pak slouží příkaz sed:

Kód: [Vybrat]
$ echo -e 'ahoj\nnazdar' | sed -E 's/ahoj/Dobrý den/g'
Dobrý den
nazdar

Ve výrazu můžeš vyznačit pomocí (závorek) tzv. skupiny a pak se na ně odkazovat v nahrazovaném příkazu pomocí $x nebo \x, kde x je číslo skupiny (0 = celý výraz, 1,2,3… jsou pak obsahy jednotlivých závorek tak, jak jdou po sobě).

Hledat a nahrazovat umí Emacs, Vim, mcedit…

A kromě textového terminálu můžeš použít nějaký editor s GUI – např. Kate, Geany, jEdit… – a jeho funkci najít (a nahradit).

jEdit má navíc hezkou funkci/plugin Highlight – tam si nadefinuješ regulární výrazy a k nim barvy, kterými se mají výskyty v textu podbarvovat. Zvýrazníš si tak třeba všechna TODO, e-maily, IP adresy, datum, URL, klíčová slova atd.
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: Sten 28. 06. 2018, 09:43:25
Pro začátečníka bych ještě zmínil KRegExpEditor: vytvoříte stavový diagram toho, co se má hledat, a ono to vygeneruje regexp, také to umí rozložit regexp na stavový diagram, takže se dobře hledají chyby.
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: Youda 28. 06. 2018, 16:43:54
V kazdem linuxu mas perl

perl -e '"zdar kokoti!"=~/(kokoti)/; print "$1\n";'
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: jiwopeneASFDDFHG 28. 06. 2018, 16:44:51
Zde je malý skript pro zkoušení regulárních výrazů:
Kód: [Vybrat]
#!/bin/bash

[[ "$1" = "--help" ]] && echo -e "\n$0 regvyraz [moznosti]\nNapř.: $0 '.*' g\n\nBere řádky ze std. vstupu a na výstupu tiskne zvýrazněný vstup.\n"  && exit

sed "s/$(printf %s "$1"|sed "s/\//\\\\\//g")/$(echo -e '\e')[31m&$(echo -e '\e')[0m/$2"

Stačí uložit a povolit spouštění (chmod +x NAZEV_SOUBORU).

Když ho pojmenujete program, spouští se (z aktuální složky) ./program REGVÝRAZ MOŽNOSTI. Potom pište různé vstupy (řádky se vyhodnotí zvlášť), vypisuje zvýrazněný text. (Ukončí se Ctrl-C nebo Ctrl-D.) Je možno použít přesměrování (za příkaz napíšete <NÁZEVSOUBORUSEVSTUPEM), pak pracuje sám.

MOŽNOSTI jsou ty volby za lomítkem, pište třeba g
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: mlčeti IDE 28. 06. 2018, 17:48:21
blbečci, tazatel se asi ptá na to, jak "trénovat" výrazy (což je přidaná hodnota těch webových stránek, že jsou něco jako IDE na regexp, ukazují interaktivně kroky,skupiny a syntaxi). Ne na to, jak provedede funkci preg_match v bashi nebo v php.

Tecy aspoň doufám, že tazatel se ptal na nějaký playground, kde si to vyzkouší, pohraje, naučí a né na CLI implementaci.. ta je pro lidi, co už to umí


samozřejmě že na použítí (bez zkoušení, prostě provést match) jsou normální nástroje pgprep a funkce v programovacích jazycích, bez "té gui" omáčky, která ale je dost užitečná při ladění, učení a zkoušení.... Případně na jednorázovou prácičku s výrazem

Je smutné, že linux ani windows takový nástroje nemají offline (nevím o něm, pro windows asi něco bude)...
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: gll 28. 06. 2018, 18:39:29
dobrý dotaz, většina odpovědí mimo. Zkuste některý z doplňků do VS Code.
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: gll 28. 06. 2018, 18:44:50
třeba https://marketplace.visualstudio.com/items?itemName=le0zh.vscode-regexp-preivew
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: gll 28. 06. 2018, 19:12:02
Zde je malý skript pro zkoušení regulárních výrazů:
Kód: [Vybrat]
#!/bin/bash

[[ "$1" = "--help" ]] && echo -e "\n$0 regvyraz [moznosti]\nNapř.: $0 '.*' g\n\nBere řádky ze std. vstupu a na výstupu tiskne zvýrazněný vstup.\n"  && exit

sed "s/$(printf %s "$1"|sed "s/\//\\\\\//g")/$(echo -e '\e')[31m&$(echo -e '\e')[0m/$2"

Stačí uložit a povolit spouštění (chmod +x NAZEV_SOUBORU).

Když ho pojmenujete program, spouští se (z aktuální složky) ./program REGVÝRAZ MOŽNOSTI. Potom pište různé vstupy (řádky se vyhodnotí zvlášť), vypisuje zvýrazněný text. (Ukončí se Ctrl-C nebo Ctrl-D.) Je možno použít přesměrování (za příkaz napíšete <NÁZEVSOUBORUSEVSTUPEM), pak pracuje sám.

MOŽNOSTI jsou ty volby za lomítkem, pište třeba g

dělá to stejné co obarvený grep
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: piv 28. 06. 2018, 20:30:43
Ahoj, kdysi jsem pouzival Kodos (http://kodos.sourceforge.net/ (http://kodos.sourceforge.net/)). Jednoduche, vcetne integrovaneho helpu a mozna by to stacilo.
Dale jsem nasel, ze existuje desktopova verze jakehosi RegExr (https://regexr.com/ (https://regexr.com/)). Nevim, neznam, mozno vyzkouset.
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: Youda 28. 06. 2018, 21:12:46
Hmm.

Jak vidno, mame tu novou generaci, ktera se be gui ani nevysere.
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: jiwopeneAEDFR 28. 06. 2018, 21:55:54
dělá to stejné co obarvený grep
Jak v grepu udelam to, ze pise i neodpovidajici radky?
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: x 28. 06. 2018, 22:12:41
Man stranky......jo ale ty jsi na systemu kde stoji za houby........

Tak si je z jineho ulozit treba do PDF
Název: Re:Jak testovat regexp v Linuxu bez internetového připojení?
Přispěvatel: gll 28. 06. 2018, 22:31:53
dělá to stejné co obarvený grep
Jak v grepu udelam to, ze pise i neodpovidajici radky?

Kód: [Vybrat]
alias mygrep="grep -e '$' -e "