2024-09-26 22:11:05 发布
网友
我试图用一种暴力的方式来破解一个密码,我不知道其中的任何一个字符是什么,但我知道语言,每个单词的长度和所有字符的位置。在
课文中有一个词是“avarrm”,所以我希望我能在字典里循环,只匹配第一个位置的字符与第三个位置的字符相同,第四个位置的字符与第五个位置的字符相同,剩下的字符不是这两个字符中的任何一个或彼此不相同。在
这听起来像是一个正则表达式的工作,但我完全不知道我将如何去写它。这可行吗?如果可行,怎么做?或者我应该忘记regex,用一堆if来做?在
这可能是必需的:
^(.).\1(.)\2((?!(\1|\2)).)*$
(.).\1(.)\2匹配后跟一个字符的字符,与第一个字符后跟两个相同的字符相同。在
(.).\1(.)\2
((?!(\1|\2)).)*匹配零个或多个既不是第一个字符也不是第四个字符的字符。在
((?!(\1|\2)).)*
这是你的要求吗?在
编辑
这将确保最后一部分不会有重复字符:
要使第二个字符不重复,请使用:
^(.)((?!\1).)\1((?!(\1|\2)).)\3((?!(.).*\6)(?!(\1|\2|\3)).)*$
另一种方法是将字符串转换为数字序列:
str1 = 'avarrm' str2 = 'lylbbn' def num_sequence(str_arg): return [dict(zip(str_arg, range(len(str_arg))))[n] for n in str_arg] print num_sequence(str1), num_sequence(str2)
会产生什么结果
[0,3,2,3,5,5] [0,3,2,3,5,5]
由于列表是相等的,“lylbn”是一个解决方案候选。在
这可能是必需的:
(.).\1(.)\2
匹配后跟一个字符的字符,与第一个字符后跟两个相同的字符相同。在((?!(\1|\2)).)*
匹配零个或多个既不是第一个字符也不是第四个字符的字符。在这是你的要求吗?在
编辑
这将确保最后一部分不会有重复字符:
^{pr2}$要使第二个字符不重复,请使用:
另一种方法是将字符串转换为数字序列:
会产生什么结果
[0,3,2,3,5,5] [0,3,2,3,5,5]
由于列表是相等的,“lylbn”是一个解决方案候选。在
相关问题 更多 >
编程相关推荐