用正则表达式匹配时怎么写表达式可以把所有可能的匹配项列出来:比如有字符串“abcdef”,正则表达式怎么写可以把“a”,"b","c","d","e","f","ab","ac",…,"abc",…,"abcdef"等所有情况都列出来,请各位指点小菜……
/^[abcdef]+$/
你这是想要排列组合,不是要正则匹配
排列组合,
import itertools
|[a-z]*(我忘了具体怎么写,反正是一个数量范围)|
/^((?!(a{2,}|b{2,}|c{2,}|d{2,}|e{2,}|f{2,}))[abcdef]){1,6}$/
关于正则缝隙(开始匹配的位置(?!))
⭐^
表示一个缝隙,每行的开头
⭐$
表示一个缝隙,每行的结尾
⭐(?!X)
表示一个缝隙
⭐(?!X).
表示一个字符
从 (?!X) 代表的缝隙向后填充一个字符,点可以换成别的有限定意义的表达式
从每行的每个缝隙(开头、结尾、两个字符间)开始向后匹配
其中所有匹配不到 X 的缝隙
你的字符串应该不能出现aa,aaa,aaaa,aaaaa,aaaaaa,所以不能包含超过两枚字符的a,b,c,d,e,f
所以缝隙(开始匹配的位置)应该表示为(?!(a{2,}|b{2,}|c{2,}|d{2,}|e{2,}|f{2,})),开始匹配的字符需要是[abcdef]
里边选,1到6枚字符所以组合起来就是
/^((?!(a{2,}|b{2,}|c{2,}|d{2,}|e{2,}|f{2,}))[abcdef]){1,6}$/
您的采纳就是对我最大的动力,如果您还比较满意,可否打赏一点,谢谢!!!
正则是字符串匹配,查找你到你所需要的内容,以便后期提取出来你所要的内容。不是用来组合的
itertools模块实现排列组合
from itertools import combinations
test_data = 'abcdef'
for _len in range(len(test_data)):
for i in combinations(test_data, _len):
print(i)
你可以参考下这篇文章:python正则表达式与re模块