我試圖創建一個正則表達式,讓我從我感興趣的一個輸入幾個組合對。正則表達式來產生一個單詞以連續字母
如果我有以下的輸入...
「pppeeeople」
我想創建以下排列...
人,ppeeople,peeople,ppeople。
我目前可以用以下兩個REGEX創建'people'和'ppeeople',其中輸入詞是'pppeeeople'。
String temp = word.replaceAll("(.)\\1{2,}", "$1$1"); //result ppeeople
String temp2 = word.replaceAll("(.)\\1{1,}", "$1"); //result people
但是我想能夠產生一個正則表達式也可以用1套兩個連續程序字母搶詞,如「ppeople」,然後另一個正則表達式,可以跳過第一inputed雙字符序列併產生'peeople'等等。基本的想法是獲得包含兩個連續字符的單詞的所有排列。
這是可能與REGEX或我應該只是使用循環和StringBuilder到列表中?
這很接近,但它會產生超出範圍的索引錯誤,我仍然必須從ArrayList重複項中刪除重複項,並將其添加到。
int index = temp.length();
for (int i = 0; i < index; i++) {
System.out.println("Index" + i + ": " + temp);
if(temp.charAt(i) == temp.charAt(i+1)) {
StringBuilder sb = new StringBuilder(temp);
repeats.add(temp);
sb.deleteCharAt(i);
temp = sb.toString();
}
}
「我應該只是使用循環和StringBuilder到列表中?」幾乎總是,是的。 – Sneftel
更好的方法是構建帶回溯遞歸的字符串。如果你需要這樣的事情,我可以爲你寫一個片段。 –
我這樣做 - 但會遞歸比只使用StringBuilder或子字符串方法更好嗎?我有一個不可思議的子字符串循環,幾乎做我想要的,但還不完全。 – Yawn