例如與五個字母ABCDE一個字,每個字母出現正好一次,以任意順序,沒有休息,字崩潰會因爲debac工作,但海底將不起作用,因爲:1.在任何可以形成的5個字符的序列中沒有c,並且2.字母e出現兩次。又如,反饋將因爲edbac而工作。請記住,解決方案必須僅使用正則表達式來完成。使用正則表達式來查找
我試圖實施的策略是:匹配第一個字母,如果它在[a-e]裏面,並記住它。然後找到[a-e]中的下一個字母,但不是第一個字母。等等。我不知道語法是什麼(或者即使某些語法存在的),所以我的代碼沒有工作:
open(DICT, "dictionary.txt");
@words = <DICT>;
foreach my $word(@words){
if ($word =~ /([a-e])([a-e^\1])([a-e^\1^\2])([a-e^\1^\2^\3])([a-e^\1^\2^\3^\4])/
){
print $word;
}
}
我也在想使用(=正則表達式?)和\ G變的,但我沒」確定它會如何工作。
+1 - 我比我自己的解決方案更喜歡這個。爲了向其他人解釋,這些預測保證:在接下來的5個字母中,至少有一個'a',至少一個'b',至少一個'c',至少一個'd'和至少一個' E」。鑑於只有五個「插槽」,它保證每個只出現一次。 –
增加了替代解決方案。 – ikegami
如果你想找到重複的東西(例如abcdd而不是abcde) – ikegami