例如与五个字母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