目標: 我想分開單詞來計算文檔中的頻率,然後對這些頻率進行一些計算。用於匹配重音字符的正則表達式
詞語可以開始/包含/結束與任何以下的:
- 數字
- 字母(包括電子,U,ó等,但不符號像$,#&等)
的話可包含(但不開始或者結尾)
- 下劃線(例如:rishi_dua)
- 單引號(例如:不能)
- 連字符(例如:123-)
的話可通過任何符號或空白等$,#,&,製表符
分離問題:
- 我不能找出如何搭配é,ú,ó等沒有匹配 其他特殊字符。
- 什麼是做到這一點(可選)
- 通過分割空間的時刻爲我工作,因爲沒有其他
更有效的方式是什麼我已經試過:
方法: 首先,我代替一切,除了\ W(字母加「_」),「和 - 與空間 後來我刪除」,_和「如果這是在初學者發現nning或字 結束最後我更換單個空格多個空格和分裂的話
代碼: 我使用了一系列的正則表達式替換如下:
$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
}
約束: 我必須在Perl中完成它(因爲這是我在Perl中編寫的較大代碼的一部分),但我可以使用除正則表達式之外的其他選項
@Rishi也看看Perl的Unicode的擴展:http://perldoc.perl.org/perlunicode.html –
@Casimir,我只是試過你的代碼。這不適合我。正如Eli Algranti和Jim Monty所建議的,我想這與字符編碼有關。我會讀它 –
@Rishi Dua,你是如何解碼你的輸入? – ikegami