Nic*_*ung 1 python regex string
我有一个混合了大写和小写字母的字符串.我需要找到每个由3个大写字母包围的小写字母,并从字符串中提取它.
例如,ZZZaZZZ我想a在前一个字符串中提取.
我写了一个能够提取ZZZaZZZ但不能a单独提取的脚本.我知道我需要使用嵌套的正则表达式来执行此操作但我不能完全理解如何实现它.以下是我所拥有的:
import string, re
if __name__ == "__main__":
#open the file
eqfile = open("string.txt")
gibberish = eqfile.read()
eqfile.close()
r = re.compile("[A-Z]{3}[a-z][A-Z]{3}")
print r.findall(gibberish)
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢你的答案!我想我应该更具体一点.我需要找到由三个完全相同的大写字母包围的小写字母,例如在我的示例中ZZZaZZZ.
你真是太近了!阅读MatchObjects的.group*方法.例如,如果您的脚本以.结尾
r = re.compile("[A-Z]{3}([a-z])[A-Z]{3}")
print r.match(gibberish).group(1)
Run Code Online (Sandbox Code Playgroud)
然后你将捕获第一组内的所需角色.
要解决匹配重复字母的新约束,可以使用反向引用:
r = re.compile(r'([A-Z])\1{2}(?P<middle>[a-z])\1{3}')
m = r.match(gibberish)
if m is not None:
print m.group('middle')
Run Code Online (Sandbox Code Playgroud)
这看起来像:
middle.middle组的值.| 归档时间: |
|
| 查看次数: |
4369 次 |
| 最近记录: |