athabus
8.07.2009, 13:21:28
Witam,
próbuję ułożyć wyrażenie regularne, które pozwoli mi znaleźć pełne słowo w tekście. Problem jest banalny dopóki mamy do czynienia ze słowami angielskimi. Jeśli pojawiają się polskie znaczki to wyrażenia typu /w+ nie działąją. Wiem już, że to problem z Unicodem, ale czy można jakoś to obejść?
z góry dzięki za odpowiedzi.
Można obejść tworząc całą klasę (znaków) ręcznie dopisując polskie krzaczki.
zeulus
8.07.2009, 13:46:16
preg_match i \p{L} który jest odpowiednikiem \w ; musisz wtedy dodać modyfikator "u" na końcu wyrażenia. Więcej pod adresem:
http://www.php.net/manual/en/regexp.reference.unicode.php lub
http://blog.adiasz.pl/tag/regexp/
Tylko że jest taki szczegół, iż temat dotyczy javascriptowego obiektu RegExp.
Snickers01
8.07.2009, 14:11:49
A czy przypadkiem "pełne słowo" nie jest poprzedzone białym znakiem i nie konczy się takim znakiem?
athabus
8.07.2009, 14:20:35
Dokładnie, a w js regexp jest... upośledzony.
To co podałeś erix wypróbowałem na samym początku i ... nie działało. Ale napisałeś o tym więc spróbowałem ponownie i zadziałało ;-) Pewnie jakąś literówki w kodzie zrobiłem... Nienawidzę javascriptu ;-)
Dzięki bardzo - rozwiązałeś mój problem.
//edit Snickers - niby masz rację, ale pracuję nad pewną rzeczą, która powoduje, że to nie jest dobre rozwiązanie w tym konkretnym przypadku. Zawsze dochodzą też kropki, myślniki różne białe znaki itp. Wiem że można zrobić alternatywy etc, ale rozwiązanie erixa jest bardziej elegancki i łatwiejsze w utrzymaniu kodu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.