我正在撰寫代碼以從大量輸入檔案構造倒排索引。我已經能夠使用
String[] words = value.toString().replaceAll("[^a-zA-Z ]", " ").toLowerCase().split("\\s ");
我在用空字串替換特殊字符時遇到了一些麻煩,因為這導致一些單詞合并在一起,所以我在上面的代碼中用空格替換了它們。但是,使用上面的代碼仍然沒有給出我想要的輸出,因為它將帶撇號的單詞分成兩個單詞
我使用的輸入檔案多種多樣,有些是莎士比亞詩歌,有些是劇本,等等。我很難弄清楚如何在我的話中包含某些撇號而不是其他撇號。
例如:
輸入
'twas, 't,[order'd], king's, o', 'Brutus!', ''At
應該回來
'twas 't order'd king's o' Brutus At
換句話說,我想在前面或結尾的單個撇號和包含撇號后跟一個字母的單詞的情況下保留撇號,同時擺脫單詞周圍的一對單撇號或單詞前后的雙撇號. 有沒有辦法使用一系列正則運算式來做到這一點或接近這一點?
uj5u.com熱心網友回復:
- 用空格替換所有逗號(不創建雙空格)
- 洗掉所有非“keeper”字符
- 從參考的術語中洗掉引號
str = str.replaceAll(" *, *", " ")
.replaceAll("[^\\w' !]", "")
.replaceAll("'(\\S*)'", "$1");
見現場演示。
\w表示“任何單詞字符”
\S表示“任何非空白字符”
如果您想保留更多字符,請相應地調整正則運算式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361848.html
上一篇:正則運算式php前瞻數字
