gpt4 book ai didi

python - 使用正则表达式匹配顺序无关的字符组(在子字符串中)同时限制给定字符出现的次数的优雅方法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:21 24 4
gpt4 key购买 nike

这是 earlier question 的后续.该问题将问题修改为原始意图,并通过添加正则表达式使用子字符串 的要求来增加复杂性。

我正在寻找一种方法来使用 python 正则表达式来匹配字符组,并限制一个字符在匹配中出现的次数。主要问题是字符的顺序无关紧要。

我想找到一个简单且可扩展的模式来表达如下内容:

  • 一起找出 4 个字符。
  • 所有字符都必须来自“ABCD”组
  • 其中 0 到 4 个可以是“A”
  • 其中0到3个可以是'B'
  • 其中 0 到 3 个可以是“C”
  • 其中0到1个可以是'D'

在这种情况下,以下子字符串匹配:

AAAA AAAB AAAC AAAD AABA AABB AABC AABD AACA AACB AACC AACD AADA AADB AADC ABAA ABAB ABAC ABAD ABBA ABBB ABBC ABBD...

并且以下子字符串不匹配:

CCCC DDDD DDDA DDAA DDAB ...

我把 match list here .

是否存在不涉及列出所有可能组合的此类匹配模式?

最佳答案

使用此模式作为子字符串匹配您的条件

(?!B{4})(?!C{4})(?!([ABC]?D){2})[A-D]{4}  
(?!B{4})            # does not see 4B's
(?!C{4}) # does not see 4C's
(?!([ABC]?D){2}) # does not see 2D's in any order
[A-D]{4} # [A-D] 4 times

编辑:
阅读下面的评论后,试试这个模式:

(?!B{4})(?!C{4})((?!.?.?DD|.?D.D|D..D)[A-D]{4})

Demo

关于python - 使用正则表达式匹配顺序无关的字符组(在子字符串中)同时限制给定字符出现的次数的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com