Strona 3 z 77

Re: CMUD

: 10 lis 2011 16:12
autor: Zurwen
Help -> Pattern Matching

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

(%w) (%w) {@rasa}{%p|%s} powinno działać.

Re: CMUD

: 10 lis 2011 16:21
autor: Rennz
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.).

Re: CMUD

: 10 lis 2011 16:26
autor: Elltharion
Nie działa.. pewnie sprawa []{}(), albo coś.

Re: CMUD

: 10 lis 2011 16:38
autor: Zurwen
'Nie działa' to trochę za mało, żeby stwierdzić dlaczego nie działa.

Re: CMUD

: 10 lis 2011 16:45
autor: Elltharion
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}

Re: CMUD

: 10 lis 2011 17:48
autor: Rennz
A po co ogr w ""?

Re: CMUD

: 10 lis 2011 17:58
autor: Elltharion
Chcialem sprawdzić czy działa na "ogromny" jednak nie działało, ale już nie zmieniałem, bo reszta działała.

Re: CMUD

: 10 lis 2011 18:01
autor: Zurwen
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.

Re: CMUD

: 10 lis 2011 18:12
autor: Rennz
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ę.

Re: CMUD

: 10 lis 2011 18:27
autor: Suvi
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.