CMUD

Forum techniczne Arkadii.
Zurwen
Posty: 755
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen » 10 lis 2011 16:12

Help -> Pattern Matching

%p match any punctuation
%s match any amount of white space (spaces, tabs)

(%w) (%w) {@rasa}{%p|%s} powinno działać.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).

Rennz
Posty: 546
Rejestracja: 12 sty 2010 17:09
Lokalizacja: Kraków
Kontakt:

Re: CMUD

Post autor: Rennz » 10 lis 2011 16:21

Właściwie to skoro dodałeś listę z rasami to zawartość następnego {} nie jest potrzebna (po liście z rasami jest spacja, która automatycznie wykluczy wyrazy typu 'ogromny', 'krasnoludzki' itp.).

Elltharion
Posty: 20
Rejestracja: 10 lis 2011 14:46

Re: CMUD

Post autor: Elltharion » 10 lis 2011 16:26

Nie działa.. pewnie sprawa []{}(), albo coś.

Zurwen
Posty: 755
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen » 10 lis 2011 16:38

'Nie działa' to trochę za mało, żeby stwierdzić dlaczego nie działa.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).

Elltharion
Posty: 20
Rejestracja: 10 lis 2011 14:46

Re: CMUD

Post autor: Elltharion » 10 lis 2011 16:45

Może to mieć coś w wspólnego z typem zmiennej?

Mam zaznaczoną array

{kobieta|polelf|elfka|halfling|krasnolud|niziolka|mutantka|halflinka|gnom|krasnoludka|elf|gnomka|niziolek|mezczyzna|polelfka|mutant|mutantka|"ogr"|ogrzyca}

Rennz
Posty: 546
Rejestracja: 12 sty 2010 17:09
Lokalizacja: Kraków
Kontakt:

Re: CMUD

Post autor: Rennz » 10 lis 2011 17:48

A po co ogr w ""?

Elltharion
Posty: 20
Rejestracja: 10 lis 2011 14:46

Re: CMUD

Post autor: Elltharion » 10 lis 2011 17:58

Chcialem sprawdzić czy działa na "ogromny" jednak nie działało, ale już nie zmieniałem, bo reszta działała.

Zurwen
Posty: 755
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen » 10 lis 2011 18:01

Nie.

rasy = "ork|troll"

(%w) (%w) {@rasy}{%p|%s}

Działają:

duzy zwykly troll i mis
duzy zwykly troll,
duzy zwykly troll.

Nie działają:
duzy zwykly trollik

Czyli jak być powinno.

Rennz: Nie masz racji, (%w) (%w) {@rasy} złapie duzy zwykly trollik.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).

Rennz
Posty: 546
Rejestracja: 12 sty 2010 17:09
Lokalizacja: Kraków
Kontakt:

Re: CMUD

Post autor: Rennz » 10 lis 2011 18:12

W sumie Zurwen to masz rację - odebrałem odruchowo 'powinno działać' jako część patterna (-: Gdyby faktycznie tak było to by nie trzeba dawać, ale w tym wypadku jak najbardziej masz rację.

Suvi
Posty: 45
Rejestracja: 07 mar 2011 00:03

Re: CMUD

Post autor: Suvi » 10 lis 2011 18:27

Ale po co się użerać z koszmarnymi patternami cmuda, skoro można to zrobić uniwersalnym regexpem?

rasy = ogr|ogrzyc|polelf|polelfk|polelfc|elf|elfk|elfc|
mezczyzn|kobiet|kobiec|krasnolud|krasnoludk|krasnoludc|
gnom|gnomk|gnomc|niziolek|niziolk|niziolc|halfling|halflink|halflinc

"\a+ \a+ (@rasy)"
maly brudny ogr przybywa
malego brudnego ogra ranisz w leb
mala brudna ogrzyca lubi cie
stoi drzewo, ktore jest ogromne
malemu brudnemu ogrowi dajesz jablko

"\a+ \a+ (@rasy)(.|) " <- tu jest spacja na końcu
łapie 'wyraz' 'wyraz' 'rasa' i jeden dowolny znak/nic + spacja na końcu
maly brudny ogr przybywa
malego brudnego ogra ranisz w leb
mala brudna ogrzyca lubi cie
stoi drzewo, ktore jest ogromne
malemu brudnemu ogrowi dajesz jablko

"\a+ \a+ (@rasy)(.e|em|owi|.)"
maly brudny ogr przybywa
malego brudnego ogra ranisz w leb
mala brudna ogrzyca lubi cie
stoi drzewo, ktore jest ogromne
malemu brudnemu ogrowi dajesz jablko

(tekst) to lista rozdzielona |
\a+ łapie jedną lub więcej liter
. to jeden dowolny znak
Więcej jest w dokumentacji, sporo też można znaleźć "w internetach". No i o wiele bardziej zaawansowane niż patterny cmudowe zastosowania np. w funkcjach %regex i %subregex.

re Zurwen na dole:
Pozwala na większą precyzję, m.in. na wykluczanie jakiegoś słowa/znaku, jest szerzej stosowany i można ten sam pattern przenieść np. do tfa.
Ostatnio zmieniony 10 lis 2011 18:36 przez Suvi, łącznie zmieniany 1 raz.

ODPOWIEDZ