我正在處理twitter數據規範化。 Twitter用戶經常使用像我愛你這樣的術語來強調愛這個詞。我希望通過替換重複字符來將這些重複的字符替換爲正確的英語單詞,直到我得到一個合適的有意義的單詞(我意識到我不能通過這種機制區分善與惡)。替換java中的連續重複字符
我的策略是
識別這些重複的字符串的存在。我會尋找超過2個相同的字符,因爲可能沒有超過兩個重複字符的英文單詞。
String[] strings = { "stoooooopppppppppppppppppp","looooooove", "good","OK", "boolean", "mee", "claaap" }; String regex = "([a-z])\\1{2,}"; Pattern pattern = Pattern.compile(regex); for (String string : strings) { Matcher matcher = pattern.matcher(string); if (matcher.find()) { System.out.println(string+" TRUE "); } }
搜索這樣的話像WORDNET
一個詞彙- 全部替換,但兩個這樣的重複字符和詞彙檢查
- 如果不是有在詞典中刪除一個多重複的字符(否則把它拼寫錯誤)。
由於我的Java知識欠佳,我無法管理3和4.問題是我無法替換除了兩個重複的連續字符之外的所有字符。 下面的代碼替換所有,但一個重複的字符System.out.println(data.replaceAll("([a-zA-Z])\\1{2,}", "$1"));
幫助需要找出 A.如何更換所有,但連續2個重複字符 B.如何從 的輸出中刪除一個更連續的字符[我認爲B可以通過以下代碼片段來管理]
System.out.println(data.replaceAll("([a-zA-Z])\\1{1,}", "$1"));
編輯:由Wiktor提供的解決方案Stribiżew在Java中完美工作。我想知道需要做什麼修改才能在python中獲得相同的結果。 Python使用re.sub。
不是['.replaceAll(正則表達式,「$ 1 $ 1」)'](http://ideone.com/xt8g72)適合你嗎?然後,'.replaceAll(正則表達式,「$ 1」)'只會保留1. –
太棒了!有用。 .replaceAll(正則表達式,「$ 1 $ 1」)只剩下兩個連續的字符。請解釋$ 1 $ 1是如何工作的。 – Dibs