我正在尝试创建一个正则表达式来匹配字符串中指定次数的字符。该字符不必在它最后一次出现后立即出现,因此正则表达式必须在它出现的任何地方匹配该字符的次数,而该次数不超过给定的次数。
此外,这个正则表达式必须是重叠的,这意味着它必须找到包含指定字符的所有子字符串,它被指定的次数;它必须在字符串中尽可能多地执行此操作。
这是我的尝试,这只是蛮力的,并找到几乎所有可能包含该字符的字符串:
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' 我需要帮助才能使正则表达式匹配我想要的不是一切