Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Pomoc s regex + SED (pro scrabble)  (Přečteno 2232 krát)

DuckD

  • Stálý člen
  • **
  • Příspěvků: 878
  • Open Srdcař
    • www.duckd.cz
Pomoc s regex + SED (pro scrabble)
« kdy: 02 Ledna 2015, 23:36:29 »
Ahoj,potřebuji poradit jak na regulární výraz. Je to pro hledání slova ve scrabble.
Mám slovnik obsahující slova. V něm potřebuji najít slovo začínající na A které obsahuje pouze jeden výskyt dalších písmen a,b,c,d,e,f.

Zkouším a nemohu na to přijít:
Kód: [Vybrat]
cat slovnik.txt | sed -n '/^a[abcdef]/p'
cat slovnik.txt | sed -n '/^a(a|)(b|)(c|)(d|)(e|)(f|)/p'
cat Czech.txt | sed -n '/^k[ameclkář]*$/p'
cat Czech.txt | sed -n '/^[ameclk]*ář$/p'

Poradíte prosím?
Díky!
« Poslední změna: 04 Ledna 2015, 21:33:03 od DuckD »
8) Lidé žijí v souborech. ===>> LINUXTERO <<=== Pravidelná dávka tvého linuxtera!

Mariocz

  • Aktivní člen
  • *
  • Příspěvků: 148
Re:Pomoc s regex + SED (pro scrabble)
« Odpověď #1 kdy: 03 Ledna 2015, 00:44:42 »
v tvých pokusech musí znak následovat hned po 'a'

Kód: [Vybrat]
cat slovnik.txt | sed -n '/^a.*[abcdef]/p'

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re:Pomoc s regex + SED (pro scrabble)
« Odpověď #2 kdy: 03 Ledna 2015, 12:19:39 »
Regularni vyraz:

grep -P '^b(?!.*?(.).*?\1)[abcdef]*$' slovnik.txt

- prvni zvyraznene "b" je "b", kterym musi text zacinat (muze to byt i vice pismen za sebou)
- ta zavorka (?! ... ) - negativni reference - zabranuje opakovani znaku (tj. "nesmi projit to, ze se najde 'co nejmensi shoda nula ci vice libovolnych znaku' nasledovanych nejakym (nazveme ho REF) znakem nasledovanym 'co nejmensi shodou nula ci vic libovolnych znaku' nasledovanych tim REF znakem")
- ta dalsi zvyraznena pismena v zavorce abcdef jsou ta dalsi pismena, ktera maji tvorit slova ze slovnik.txt, pricemz se zadne nesmi opakovat.

Tento regex ma to omezeni, ze ho nelze pouzit, pokud potrebujeme slovo, ve kterem se nejake znaky opakuji (nepocitaje v to prvni pismeno/pismena - viz zvyraznene "b").
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Pomoc s regex + SED (pro scrabble)
« Odpověď #3 kdy: 03 Ledna 2015, 15:03:10 »
v tvých pokusech musí znak následovat hned po 'a'

Kód: [Vybrat]
cat slovnik.txt | sed -n '/^a.*[abcdef]/p'
tohle je:

zacina na "a" a nasleduje libovolny retezec cehokoliv a konci na jeden ze znaku v [] ...

Jinak to se podle me neda udelat regularnim vyrazem .. a pokud to udelas, tak to bude nejakej extremni a dlouhej hnus
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

DuckD

  • Stálý člen
  • **
  • Příspěvků: 878
  • Open Srdcař
    • www.duckd.cz
Re:Pomoc s regex + SED (pro scrabble)
« Odpověď #4 kdy: 04 Ledna 2015, 21:34:56 »
Ok, díky chlapy!
8) Lidé žijí v souborech. ===>> LINUXTERO <<=== Pravidelná dávka tvého linuxtera!

 

Provoz zaštiťuje spolek OpenAlt.