Strona 1 z 3

Re: Oficjalny klient - skargi wnioski zazalenia

: 25 lis 2016 16:15
autor: Volhold
Witam mam pytanie natury technicznej.

Chciałem sobie stworzyć w kliencie pomoc do oceny przedmiotów. O ile jako tako udało mi się z orężem o tyle mam problem ze zbrojami.
Poniżej przykład:

Kod: Zaznacz cały

przekształcanie tekstu:
wzorzec: dosc dobrze
zmiana: dosc dobrze 8/12

Twoje doswiadczenie i umiejetnosci podpowiadaja ci, ze chroni ona dosc dobrze 8/12 9/12 przed obrazeniami cietymi, niezle 3/12 7/12 przed klutymi i przyzwoicie 6/12 przed obuchowymi. Ponadto jest SKUTECZNOSC 9/14 w parowaniu ciosow.
Niestety klient wrzuca podwójnie ocene, w tym przypadku dla fraz dosc dobrze i niezle. Da radę to jakoś tak zapisać by uniknąc takiej sytuacji?

Re: Oficjalny klient - skargi wnioski zazalenia

: 25 lis 2016 23:36
autor: Artak
Volhold pisze:Witam mam pytanie natury technicznej.

Chciałem sobie stworzyć w kliencie pomoc do oceny przedmiotów. O ile jako tako udało mi się z orężem o tyle mam problem ze zbrojami.
Poniżej przykład:

Kod: Zaznacz cały

przekształcanie tekstu:
wzorzec: dosc dobrze
zmiana: dosc dobrze 8/12

Twoje doswiadczenie i umiejetnosci podpowiadaja ci, ze chroni ona dosc dobrze 8/12 9/12 przed obrazeniami cietymi, niezle 3/12 7/12 przed klutymi i przyzwoicie 6/12 przed obuchowymi. Ponadto jest SKUTECZNOSC 9/14 w parowaniu ciosow.
Niestety klient wrzuca podwójnie ocene, w tym przypadku dla fraz dosc dobrze i niezle. Da radę to jakoś tak zapisać by uniknąc takiej sytuacji?
Jak dla mnie to wrzuca Ci na dosc dobrze i na dobrze (a dokladniej najpierw dobrze zmienia Ci na dobrze 9/12, a pozniej dosc dobrze zmienia Ci na dosc dobrze 8/12 i powstaje dosc dobrze 8/12 9/12). Rozwiazaniem jest po prostu zwiekszenie regexa (albo dodaj ona dobrze i ona dosc dobrze, albo, jesli w kliencie możesz używać pełnego regexa, to dla dobrze zrób negacje dosc przed nim i będzie śmigać :P)

Oficjalny klient - przekształcenia tekstu

: 27 lis 2016 00:16
autor: Fuggazi
Zainspirowany trochę tym postem:
viewtopic.php?f=15&t=218&start=600#p50162
i moimi skromnymi wcześniejszymi próbami z przekształceniami tekstu jak również poniższym:
Rafgart pisze:Jednak jesli chodzi o konfiguracje (a w szczegolnosci wyrazenia regularne), to prosze zalozyc osobny temat.
Zakładam więc.

I na pierwszy ogień następujący problem.
Jakie wyrażenie regularne zastosować, lub jak to zrobić, żeby zamieniało mi:
wzorzec tekstu: wyjatkowo skuteczn(a|e|y)
na zmieniony tekst w zaleznosci od odmiany "skuteczn(a|e|y)", czyli np na: wyjatkowo skuteczne (12/14)

Re: Oficjalny klient - przekształcenia tekstu

: 27 lis 2016 09:57
autor: Artak
Fuggazi pisze:Zainspirowany trochę tym postem:
viewtopic.php?f=15&t=218&start=600#p50162
i moimi skromnymi wcześniejszymi próbami z przekształceniami tekstu jak również poniższym:
Rafgart pisze:Jednak jesli chodzi o konfiguracje (a w szczegolnosci wyrazenia regularne), to prosze zalozyc osobny temat.
Zakładam więc.

I na pierwszy ogień następujący problem.
Jakie wyrażenie regularne zastosować, lub jak to zrobić, żeby zamieniało mi:
wzorzec tekstu: wyjatkowo skuteczn(a|e|y)
na zmieniony tekst w zaleznosci od odmiany "skuteczn(a|e|y)", czyli np na: wyjatkowo skuteczne (12/14)
Pytanie czy klient posiada matches. Jeśli posiada, to teoretycznie powinno być "skuteczn"+matches[2] (+ jako konkatenacja stringów, też nie wiem jak oficjalny je łączy). Jeśli nie posiada, to musisz niestety zrobić 3 różne podstawienia :)

Re: Oficjalny klient - przekształcenia tekstu

: 27 lis 2016 16:48
autor: Haern
$0 ?

Re: Oficjalny klient - przekształcenia tekstu

: 28 lis 2016 09:49
autor: Fuggazi
Haern pisze:$0 ?
Haern!
You are the greatest!

Re: Oficjalny klient - przekształcenia tekstu

: 28 lis 2016 17:11
autor: Fuggazi
Tak sobie pomyślałem: a skoro da się tak ładnie podziałać na zmiennych to może zamiast 14 wzorców zrobić jeden?
Czyli np.:

Kod: Zaznacz cały

wzorzec:
(on|ona|ono) (wyjatkowo zle|bardzo zle|zle|bardzo kiepsko|kiepsko|przyzwoicie|srednio|niezle|dosc dobrze|dobrze|bardzo dobrze|doskonale|perfekcyjnie|genialnie) wywazon(a|e|y)

zamiana:
$0 $1 wywazon$2 (x/14)
Tylko co zrobić z "x" gdzie powinny pojawiać się cyfry od 1-14 wg. kolejności wartości zmiennej $1 ????

Re: Oficjalny klient - przekształcenia tekstu

: 28 lis 2016 22:59
autor: Artak
Fuggazi pisze:Tak sobie pomyślałem: a skoro da się tak ładnie podziałać na zmiennych to może zamiast 14 wzorców zrobić jeden?
Czyli np.:

Kod: Zaznacz cały

wzorzec:
(on|ona|ono) (wyjatkowo zle|bardzo zle|zle|bardzo kiepsko|kiepsko|przyzwoicie|srednio|niezle|dosc dobrze|dobrze|bardzo dobrze|doskonale|perfekcyjnie|genialnie) wywazon(a|e|y)

zamiana:
$0 $1 wywazon$2 (x/14)
Tylko co zrobić z "x" gdzie powinny pojawiać się cyfry od 1-14 wg. kolejności wartości zmiennej $1 ????
Chyba muszę zacząć się bawić oficjalnym :)
Macie tam jakiegoś ifa, albo case'a?

Tak jak się zalogowałem i popatrzyłem w manual to jest coś takiego jak %0, %1 ... - kolejne wyrazy znalezionego fragmentu pasującego do wzorca. Może z tym musiałbyś pokombinować?

Re: Oficjalny klient - przekształcenia tekstu

: 29 lis 2016 07:49
autor: Haern
Raczej się nie uda. Dla takich zabaw potrzebujesz klienta z pełną możliwością skryptowania. W tym wypadku jakieś CMUDowe %ismember() na przykład.

Re: Oficjalny klient - przekształcenia tekstu

: 19 sty 2017 23:21
autor: Rafgart
Bardzo krotki kurs wyrazen regularnych uzywanych przy przeksztalcaniu tekstu w kliencie WWW:

Symbole specjalne:

Kod: Zaznacz cały

^ - symbol rozpoczecia linii
$ - symbol zakonczenia linii
. - dowolny znak
\w - dowolna litera lub cyfra
\d - dowolna cyfra
\s - znak spacji
+ - kwantyfikator oznaczajacy jeden lub wiecej znakow poprzedzajacych ten symbol
* - kwantyfikator oznaczajacy zero lub wiecej znakow poprzedzajacych ten symbol
() - umieszczenie fragmentu wzorca w nawiasach okraglych tworzy podciag, dopasowany do niego tekst trafi do zmiennej typu $n (jak: $0, $1, ... numer n zalezy od tego, ktory to podciag w calym wzorcu)
| - oddziela rozne warianty wewnatrz podciagu
[] - umieszczenie znakow w nawiasach kwadratowych tworzy klase, znaki wewnatrz traktowane sa jakby byly odzielone symbolem LUB (albo I NIE, jesli po [ damy ^), cala klasa jest traktowana jak jeden znak, wiec na przyklad mozna stosowac do niej kwantyfikatory + i *
\ - powoduje, ze nastepujacy znak przestaje byc symbolem specjalnym
Proste przyklady:

Kod: Zaznacz cały

.* - lapie zero lub wiecej dowolnych znakow
\w+ - lapie jedna lub wiecej liter (a wiec dowolny wyraz)
\. - lapie doslownie znak kropki (inaczej kropka lapie dowolny znak)
[abc] - lapie znaki 'a', 'b' lub 'c'
[ab]+ - lapie dowolna ilosc znakow 'a' i 'b'
[\.!] - lapie kropke lub wykrzyknik
[^\.!] - lapie dowolny znak nie bedacy kropka i wykrzyknikiem
(miecz|topor) - lapie konkretne wyrazy 'miecz' lub 'topor' a wynik wstawia do zmiennej typu $n 
(\w+ \w+ \w+|\w+) - lapie jeden lub trzy wyrazy a wynik wstawia do zmiennej typu $n
([\w\s]+) - lapie dowolny niepusty ciag liter, cyfr i spacji a wynik wstawia do zmiennej typu $n
Przykladowy dluzszy kurs:
https://regexone.com/lesson/introduction_abcs

Do testowania wyrazen mozna uzyc na przyklad tej strony:
https://regex101.com (trzeba po lewej stronie zaznaczyc, ze to regexp javascript)

Wyrazenia regularne na poczatku moga przerazac, ale ich podstawowa znajomosc przyda sie kazdemu, kto pracuje lub bedzie pracowac na komputerze. Warto sie pomeczyc przy zabawie na Arkadii i je choc troche zrozumiec.