为了账号安全,请及时绑定邮箱和手机立即绑定

用正则表达式参考组内组

用正则表达式参考组内组

千巷猫影 2021-03-15 10:19:14
我试图找到一个正则表达式,将一个以两个相同的符号结尾的单词分组,后跟“ ter”并将其在两个符号上拆分。示例:“ Letter”一词应分为“ Let”和“ ter”。我正在使用python,这是到目前为止我得到的:match = re.search(r'(\w*)((\w)\1(er$))', str)print match.group(1) #should print 'Let'print match.group(2) #should print 'ter'问题在于(\ w)\ 1没有引用正确的组,因为它是组中的一个组。如何解决?提前致谢。
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我正在使用命名组,因为这样可以更轻松地引用它们:


import re

pattern = r"""

          \b(?P<first_part>\w*(?P<splitter>\w))   # matches starting at a word boundary

          (?P<last_part>(?P=splitter)er\b)        # matches the last letter of the first group

                                                  # plus 'er' if followed by a word boundary

          """

matcher = re.compile(pattern, re.X)

print matcher.search('letter').groupdict()

# out: {'first_part': 'let', 'last_part': 'ter', 'splitter': 't'}


查看完整回答
反对 回复 2021-03-23
?
烙印99

TA贡献1829条经验 获得超13个赞

我希望第一组是所有事物,直到并包括两个相同符号中的第一个,第二组是第二个相同符号后跟“ er”


那将是:


match = re.search(r'(\w*(\w)(?=\2))(\w*er$)', str)


print match.groups()

# -> ('Let', 't', 'ter')


查看完整回答
反对 回复 2021-03-23
  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号