gpt4 book ai didi

Python正则表达式多次匹配字符

转载 作者:行者123 更新时间:2023-11-28 17:46:47 26 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式来匹配字符串中指定次数的字符。该字符不必在它最后一次出现后立即出现,因此正则表达式必须匹配它出现的任何地方的次数,同时该次数不超过给定的次数。

此外,此正则表达式必须重叠,这意味着它必须找到包含指定字符指定次数的所有子字符串;并且它必须在字符串中尽可能多地执行此操作。

这是我的尝试,这只是暴力破解它的方式并找到几乎所有可能包含该字符的字符串:

import re
c = raw_input()
a = re.compile(r'(?=(.*{0}.*?))(?=(.*{1}.*))(?=(.*?{2}.*))'.format(c, c, c))
print [ s for s in a.findall(raw_input()) ]

它的工作原理是它试图找到所有这些,但有时找不到所有的东西:

python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import string_regex
1
10101
[('10101', '10101', '10101'), ('0101', '0101', '0101'), ('101', '101', '101'), ('01', '01', '01'), ('1', '1', '1')]

它没有找到应该找到 2 次的字符串 '10'我需要帮助来使正则表达式匹配我想要的而不是所有内容

最佳答案

尝试使用这种模式(在 0 或 2 次之间进行 10 次):

^(([^1]+|1+(?!0))*10){0,2}([^1]+|1+(?!0))*$

您可以轻松地将它调整为 兔子 0 到 3 次:

^(([^r]+|r+(?!abbit))*rabbit){0,3}([^r]+|r+(?!abbit))*$

关于Python正则表达式多次匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032561/

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