是否有任何正则表达式来查找具有特定长度的子字符串,该子字符串包含特定字符串的最小数量?
例如,我有一个字符串,例如:AABABAAAAA
对于这个字符串,我们有一个长度为5的子字符串,其中包含两个B => AABAB
所以正则表达式应该找到它。
但对于AAAABAAAAB
,没有任何长度为5的子字符串包含两个B.
假设我们的字符串只包含A和B,我们想要找到长度为5且至少包含两个B的子字符串:
AAAABAAAAB -> Invalid
AAAAAAAABB -> Valid
AAAAAAAAAABAABAAAAAA -> Valid
AAAABAAAAAAABAAAAAAA -> Invalid
答案 0 :(得分:1)
蛮力:
.B..B|B...B|..BB.|.B.B.|..B.B|BB...|B.B..|...BB|B..B.|.BB..
嗯,我知道这样的正则表达式不可参数化。另一方面,可以通过编程方式获取它(示例在Python中):
import itertools
def get_regex(char, charnum, strsize):
chars = char * charnum + "." * (strsize - charnum)
return "|".join("".join(x) for x in set(itertools.permutations(chars)))
print get_regex("B", 2, 5)
答案 1 :(得分:0)