Skip to main content
 首页 » 编程设计

Python正则表达式,捕获不特定的组

2025年05月04日26mfrbuaa

考虑以下示例字符串:

abc1235abc53abcXX 
 
123abc098YXabc 

我想捕获出现在abc之间的组,

例如我应该得到以下组:

1235, 53, XX 
123, 098YX 

我正在尝试这个正则表达式,但不知何故它没有捕获中间文本:

(abc(.*?))+ 

我做错了什么?

编辑:我需要使用正则表达式来做到这一点,没有字符串拆分,因为我需要对捕获的组应用进一步的规则。

请您参考如下方法:

re.findall() 具有特定正则表达式模式的方法:

import re 
 
strings = ['abc1235abc53abcXX', '123abc098YXabc'] 
pat = re.compile(r'(?:abc|^)(.+?)(?=abc|$)')    # prepared pattern 
 
for s in strings: 
    items = pat.findall(s) 
    print(items) 
    # further processing 

输出:

['1235', '53', 'XX'] 
['123', '098YX'] 

  • (?:abc|^) - 非捕获组以匹配 abc 子字符串或 字符串开头 ^
  • (.+?) - 捕获组以尽可能少地匹配任何字符序列
  • (?=abc|$) - 前瞻肯定断言,确保先前匹配的项目后跟 abc 序列或 字符串结尾 $