Oficjalny klient - przekształcenia tekstu

Forum techniczne Arkadii.
Awatar użytkownika
Volhold
Posty: 10
Rejestracja: 08 wrz 2015 15:31

Re: Oficjalny klient - skargi wnioski zazalenia

Post 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?
Awatar użytkownika
Artak
Posty: 247
Rejestracja: 15 kwie 2015 16:40
Kontakt:

Re: Oficjalny klient - skargi wnioski zazalenia

Post 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)
Awatar użytkownika
Fuggazi
Posty: 162
Rejestracja: 13 maja 2010 12:48

Oficjalny klient - przekształcenia tekstu

Post 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)
Co to jest Chaos? To jest Ład, który zniszczo­no przy Stworze­niu Świata.
S.J. Lec
Awatar użytkownika
Artak
Posty: 247
Rejestracja: 15 kwie 2015 16:40
Kontakt:

Re: Oficjalny klient - przekształcenia tekstu

Post 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 :)
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: Oficjalny klient - przekształcenia tekstu

Post autor: Haern »

$0 ?
Awatar użytkownika
Fuggazi
Posty: 162
Rejestracja: 13 maja 2010 12:48

Re: Oficjalny klient - przekształcenia tekstu

Post autor: Fuggazi »

Haern pisze:$0 ?
Haern!
You are the greatest!
Co to jest Chaos? To jest Ład, który zniszczo­no przy Stworze­niu Świata.
S.J. Lec
Awatar użytkownika
Fuggazi
Posty: 162
Rejestracja: 13 maja 2010 12:48

Re: Oficjalny klient - przekształcenia tekstu

Post 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 ????
Co to jest Chaos? To jest Ład, który zniszczo­no przy Stworze­niu Świata.
S.J. Lec
Awatar użytkownika
Artak
Posty: 247
Rejestracja: 15 kwie 2015 16:40
Kontakt:

Re: Oficjalny klient - przekształcenia tekstu

Post 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ć?
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: Oficjalny klient - przekształcenia tekstu

Post 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.
Awatar użytkownika
Rafgart
Posty: 970
Rejestracja: 09 lut 2009 10:10

Re: Oficjalny klient - przekształcenia tekstu

Post 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.
ODPOWIEDZ