使用正则表达式检查字符串的子序列

路跑者

我正在尝试检查具有长度为 3 的子字符串的表达式是否只包含一个c字符。也就是说,字符串中每个长度为 3 的子字符串都必须包含一个c字符。例如:

诸如: 之类的字符串在其长度为 3 的子字符串中"a", "cc", "bbc", "cabcbbca", "acaacbacbb", "abcabcabc"都恰好有一个c。如果任何子字符串的长度小于 2,那么它们无论如何都是有效的。

但是,诸如: 之类的字符串"caaa", "bbcaacbcaac"不符合此要求,因为它们包含长度为 3 且不完全包含一个c字符的子字符串

到目前为止,我已经制作了一个快速的 python 程序来检查这个:

# Testing expressions
expressions = ["a", "cc", "bbc", "cabcbbca", "acaacbacbb", "abcabcabc", 
               "caaa", "bbcaacbcaac"]

# Getting substrings of a certain length
def get_substrings(string, sublen):
    substrs = []

    for i in range(len(string)):
        if len(string[i:i+sublen]) == sublen:
            substrs.append(string[i:i+sublen])

    return substrs

# extracting valid expressions
def get_valid_expression(expressions, minlen, char_to_check):

    valid = []

    for string in expressions:

        # if string is less than min length, then it is already valid
        if len(string) < minlen:
            valid.append(string)

        else:

            # get the subtrings
            lst = get_substrings(string, minlen)

            # Check if the substring contains exactly one of the characters
            if all(substring.count(char_to_check) == 1 for substring in lst):
                valid.append(string)

    return valid

print("Valid expressions with all substrings of length 3 containing exactly one c:")
print(get_valid_expression(expressions, 3, "c"))

['a', 'cc', 'bbc', 'cabcbbca', 'acaacbacbb', 'abcabcabc']从原始列表中返回有效的表达式

他们是正则表达式的一种方式我可以做到这一点吗?我相信生成一个正则表达式来搜索会更好,并且不需要太多代码。

迈克尔·布彻

这应该有效:

^.{0,2}$|^[^c]{0,2}(c[^c]{2})*c[^c]{0,2}$

尝试一下

要仅测试 a、b、c,请使用:

^[abc]{0,2}$|^[ab]{0,2}(c[ab]{2})*c[ab]{0,2}$

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用正则表达式检查字符串中的序列

检查字符串的正则表达式以

使用Java中的正则表达式检查字符串中的特殊字符

使用正则表达式检查字符串中的特定字符

如何使用正则表达式检查字符串中的重复字符?

使用正则表达式检查字符串“是” javascript代码

使用正则表达式检查字符串的开头是否与模式匹配

使用正则表达式检查字符串错误中的pangram

使用正则表达式检查字符串以获取有效的CSS

使用正则表达式检查字符串中的条件

使用正则表达式检查字符串和整数的组合

正则表达式检查字符串是否包含指定字符以外的字符

不包含\> <的检查字符串检查的正则表达式

使用正则表达式的子字符串

正则表达式检查字符串仅包含十六进制字符

正则表达式检查字符串中是否重复字符

C中的正则表达式,检查字符串是否包含特定字符

正则表达式-如何检查字符串是否以给定字符开始或结束?

正则表达式:检查字符串开头的字符

正则表达式检查字符串中的特定字符

正则表达式检查字符串是否仅由特殊字符组成

如何使用正则表达式检查字符串是否仅包含特定字符

使用正则表达式检查字符串是否以数字字符开头和结尾

检查字符串是否与JS中的正则表达式匹配

检查字符串是否满足正则表达式

如何检查字符串是否为正则表达式

正则表达式检查字符串是否仅包含数字

正则表达式检查字符串是否包含年份

正则表达式问题(检查字符串是否有重复)