gpt4 book ai didi

python - 如何返回与重复模式匹配的整个非拉丁字符串,例如 AAB 或 ABB

转载 作者:行者123 更新时间:2023-12-01 07:59:41 24 4
gpt4 key购买 nike

我正在处理非拉丁字符的字符串。我想匹配具有重复模式的字符串,例如 AAB、ABB、ABAB 等。我尝试了以下代码:

import re

patternAAB = re.compile(r'\b(\w)\1\w\b')
match = patternAAB.findall(rawtext)
print(match)

但是,它仅返回匹配字符串的第一个字符。我知道发生这种情况是因为第一个\w 周围有捕获括号。

我尝试在整个匹配 block 周围添加捕获括号,但 Python 给出了

error: cannot refer to an open group at position 7

我也找到了这个方法,但对我不起作用:

patternAAB = re.compile(r'\b(\w)\1\w\b')
match = patternAAB.search(rawtext)
if match:
print(match.group(1))

如何匹配模式并返回整个匹配字符串?

# Ex. 哈哈笑 
# string matches AAB pattern so my code returns 哈
# but not the entire string

最佳答案

消息:

error: cannot refer to an open group at position 7

告诉您 \1 指的是周围都有括号的组,因为它的左括号在前。您想要反向引用的组是编号 2,因此此代码有效:

import re

rawtext = 'abc 哈哈笑 def'

patternAAB = re.compile(r'\b((\w)\2\w)\b')
match = patternAAB.findall(rawtext)
print(match)

match 中的每个项目都有两个组:

[('哈哈笑', '哈')]

关于python - 如何返回与重复模式匹配的整个非拉丁字符串,例如 AAB 或 ABB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780515/

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