gpt4 book ai didi

python - 如何获取 python 正则表达式中可能从字符串中同一位置开始的所有重叠匹配项?

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:08 25 4
gpt4 key购买 nike

如何在具有多个起点和终点的 Python 字符串中获取所有可能的重叠匹配。

我尝试使用正则表达式模块,而不是默认的 re 模块来引入重叠 = True 参数,但仍然缺少一些匹配项。

尝试通过更简单的说明来描述我的问题:

查找以 a 开头并以 b 结尾的字符串 (axaybzb) 中的所有可能组合

尝试了以下代码:

import regex

print(regex.findall(r'a\w+b','axaybzb', overlapped=False))

['axaybzb']

print(regex.findall(r'a\w+?b','axaybzb', overlapped=False))

['axayb']

print(regex.findall(r'a\w+b','axaybzb', overlapped=True))

['axaybzb', 'aybzb']

print(regex.findall(r'a\w+?b','axaybzb', overlapped=True))

['axayb', 'ayb']

预期输出

['axayb', 'axaybzb', 'ayb', 'aybzb']

最佳答案

正则表达式在这里不是合适的工具,我建议:

  • 识别输入字符串中第一个字母的所有索引
  • 识别输入字符串中第二个字母的所有索引
  • 根据这些索引构建所有子字符串

代码:

def find(str, ch):
for i, ltr in enumerate(str):
if ltr == ch:
yield i

s = "axaybzb"
startChar = 'a'
endChar = 'b'

startCharList = list(find(s,startChar))
endCharList = list(find(s,endChar))

output = []
for u in startCharList:
for v in endCharList:
if u <= v:
output.append(s[u:v+1])
print(output)

输出:

$ python substring.py 
['axayb', 'axaybzb', 'ayb', 'aybzb']

关于python - 如何获取 python 正则表达式中可能从字符串中同一位置开始的所有重叠匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55655442/

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