Cel: Chcę oddzielić słowa, aby policzyć ich częstotliwość w dokumencie, a następnie wykonać obliczenia na tych częstotliwościach.Regex do pasowania znaków akcentujących
Słowa mogą rozpocząć/zwierają/koniec z jednego z następujących:
- numerów
- alfabetów (w tym e, u, ó itd ale nie symboli, takich jak $, #, & etc)
słowa mogą zawierać (ale nie zaczynają lub kończą)
- podkreślenia (np rishi_dua)
- apostrof (np: nie można)
- myślnik (np: 123-)
słów mogą być oddzielone dowolną symbolu lub spacji jak $, #, &, charakter zakładka
problem:
- nie jestem w stanie dowiedzieć się, jak dopasować E, U, ó itd bez dopasowania inne znaki specjalne .
- Jaki byłby bardziej efektywny sposób to zrobić (opcjonalnie)
- rozwarstwieniem przestrzeń pracuje dla mnie w tej chwili, ponieważ nie ma innego
Co próbowałem:
Podejście: Najpierw zastąpić wszystko z wyjątkiem \ w (alfanumeryczny plus "_") 'i - z miejscem Potem usuń', _ i "jeśli okaże się na Begi nning lub koniec słowa końcu zastąpić wielokrotne spacje z pojedynczym odstępem i podzielić słowa
Kod: Używam seria regex zastąpić następująco:
$str =~ s/[^\w'-]/ /g;
#Also tried using $str =~ s/[^:alpha:0-9_'-]/ /g; but doesn't work
$str =~ s/-//;
$str =~ s/'//;
$str =~ s/_//;
$str =~ s/ -/ /;
$str =~ s/ '/ /;
$str =~ s/ _/ /;
$str =~ s/ +/ /;
foreach $word (split(' ', lc $str)) {
#do something
}
ograniczenia: Muszę to zrobić w Perlu (ponieważ jest to część większego kodu, który napisałem w Perlu), ale mogę korzystać z innych opcji niż Regex
@Rishi wziąć również zapoznać się z rozszerzeniami Unicode Perla: http://perldoc.perl.org/perlunicode.html –
@Casimir, ja właśnie wypróbowałem twój kod. To nie działa dla mnie. Jak sugerują Eli Algranti i Jim Monty, myślę, że ma to coś wspólnego z kodowaniem znaków. Przeczytam to –
@Rishi Dua, Jak rozszyfrowałeś swoje wejścia? – ikegami