gpt4 book ai didi

python - python 正则表达式模块中的递归正则表达式?

转载 作者:行者123 更新时间:2023-11-30 22:42:14 25 4
gpt4 key购买 nike

我想捕获字符串中的所有 [[A-Za-z].]+,即字母字符后跟一个点的所有重复。

例如,在“ABC A.B.C. UVWX U.V.W.X. XYZ XY.Z。”

我只想提取“A.B.C.”“U.V.W.X.”(因为它们是一个字符后跟一个点的重复)。

似乎我需要一个递归正则表达式来执行此操作[[A-Za-z].]+

是否可以使用 python 的 re 模块或 regex 模块来实现此功能?

最佳答案

您可以使用非捕获组来定义匹配,然后将其嵌套在边界字符(在本例中不是字母或点的任何字符)之间的重复进行分组,并捕获所有匹配的组:

<!-- language: lang-py -->

import re

MATCH_GROUPS = re.compile(r"(?:[^a-z.]|^)((?:[a-z]\.)+)(?:[^a-z.]|$)", re.IGNORECASE)

your_string = "ABC A.B.C. UVWX U.V.W.X. XYZ XY.Z." # get a list of matches

print(MATCH_GROUPS.findall(your_string)) # ['A.B.C.', 'U.V.W.X.']

有点笨重,但也可以在边缘情况下完成工作。

附注上面的内容也将匹配单个出现的内容(例如 A.,如果它显示为独立的),如果您仅查找多个重复项,请替换 +(一个或多个重复项) )以及您选择的范围(例如 {2,} 表示两次或多次重复)。

编辑:进行一些小更改以匹配字符串边界的开头/结尾。

关于python - python 正则表达式模块中的递归正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42216181/

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