Jak testovat regexp v Linuxu bez internetového připojení?

asdqewqoieu

Ahojte,

nasiel som (zrejme) dobru stranku s vysvetlenim regexpov a chcel by som ich testovat a naucit sa ich pocas mojho cestovania ked som offline.

Co na to odporucate?
Pouzivam Fedoru.

Vopred dakujem.
« Poslední změna: 28. 06. 2018, 08:17:20 od Petr Krčmář »


Lol Phirae

Re:Ako testovat regexp v linuxe bez internetoveho pripojenia?
« Odpověď #1 kdy: 28. 06. 2018, 08:07:32 »
Jak uvařit guláš bez soustruhu?  :o ???

Franta <xkucf03/>

Re:Ako testovat regexp v linuxe bez internetoveho pripojenia?
« Odpověď #2 kdy: 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.

Sten

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #3 kdy: 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.

Youda

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #4 kdy: 28. 06. 2018, 16:43:54 »
V kazdem linuxu mas perl

perl -e '"zdar kokoti!"=~/(kokoti)/; print "$1\n";'


jiwopeneASFDDFHG

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #5 kdy: 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

mlčeti IDE

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #6 kdy: 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)...

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #7 kdy: 28. 06. 2018, 18:39:29 »
dobrý dotaz, většina odpovědí mimo. Zkuste některý z doplňků do VS Code.


gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #9 kdy: 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

piv

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #10 kdy: 28. 06. 2018, 20:30:43 »
Ahoj, kdysi jsem pouzival Kodos (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/). Nevim, neznam, mozno vyzkouset.

Youda

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #11 kdy: 28. 06. 2018, 21:12:46 »
Hmm.

Jak vidno, mame tu novou generaci, ktera se be gui ani nevysere.

jiwopeneAEDFR

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #12 kdy: 28. 06. 2018, 21:55:54 »
dělá to stejné co obarvený grep
Jak v grepu udelam to, ze pise i neodpovidajici radky?

x

Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #13 kdy: 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

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Jak testovat regexp v Linuxu bez internetového připojení?
« Odpověď #14 kdy: 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 "