Skip to main content
 首页 » 编程设计

python之使用 Python 查找带有正则表达式的重叠序列

2024年10月24日28tuyile006

我正在尝试提取字符串的数字和前后字符(不包括数字和空格)。该函数的预期返回是一个元组列表,每个元组具有以下形状:

(previous_sequence, number, next_sequence) 

例如:

string = '200gr T34S' 
my_func(string) 
>>[('', '200', 'gr'), ('T', '34', 'S')] 

我的第一次迭代是使用:

def my_func(string): 
    res_obj = re.findall(r'([^\d\s]+)?(\d+)([^\d\s]+)?', string) 

但是当我传递像 '2AB3' 这样的字符串时,这个函数并没有达到我的预期我想输出 [('','2','AB') , ('AB','3','')] 而是显示 [('','2','AB'), ('','3',' ')],因为 'AB' 是先前输出的一部分。

我该如何解决这个问题?

请您参考如下方法:

由于没有重叠的数字,一个单一的尾随
断言应该是你所需要的。

类似于 ([^\d\s]+)?(\d+)(?=([^\d\s]+)?)

如果你关心这个([^\d\s]*)(\d+)(?=([^\d\s]*))
NULL和空字符串的区别。