如何解决如何使用正则表达式在字符串中查找重复的字母-Python3 finditer方法 ('aaa', 'a')方法
我尝试了很多不同的方法,但是我无法完成这项工作。我需要使用正则表达式捕获两个不同的字符串(我在Py3上使用RE)。
- 我需要重复3次重复相同字母的子字符串。
- 我需要使用一个XYX子字符串,例如“ BAB”或“ ACA”(我什至不知道如何开始)
opções = "abc aab aaa acb acvd ccd bb bbb dsa dssd ssss" #the string
regular = re.compile('([a-z])\3') #I need to find "aaa","bbb" and etc.,but not "sss" or "bb"
print(regular)
print(re.findall(regular,opções))```
解决方法
问题
您有一些问题:
- 您的正则表达式
([a-z])\3
捕获单个小写字母字符,然后尝试匹配捕获组3(不存在) - 您使用
re.findall(regular,string)
,但已将正则表达式编译为regular
,因此应将其称为regular.findall(string)
- 您将正则表达式用单引号引起来(好)
'
,但正则表达式包含反斜杠。要转义它,您需要使用r''
解决方案
解决以上所有问题,我们将获得以下内容。
finditer
方法
import re
s = "abc aab aaa acb acvd ccd bb bbb dsa dssd ssss"
r = re.compile(r'\b([a-z])\1\1\b')
print([i[0] for i in r.finditer(s)])
正则表达式的工作方式是确保单词\b
周围的单词边界,以便我们恰好匹配3个重复且不再匹配(如您的问题所指定-匹配bbb
,而不匹配sss
1}})。
列表推导会遍历ssss
的结果,只为我们提供每个匹配项中的第一个元素(否则,我们将为每个元素finditer
得到一个看起来像这样的列表)。
('aaa','a')
方法
findall
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。