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

Python正则表达式,捕获不特定的组,python,regex,Python,Regex,考虑以下示例字符串: abc1235abc53abcXX 123abc098YXabc 我想捕捉abc之间发生的组 e、 g.我应该得到以下几组: 1235, 53, XX 123, 098YX 我正在尝试这个正则表达式,但不知何故它没有捕获中间文本: (abc(.*?))+ 我做错了什么 编辑:我需要使用正则表达式,不需要字符串拆分,因为我需要对捕获的组应用进一步的规则。使用: 请注意,您会得到一个空字符串,表示第一个“abc”之前的匹配项。使用: 请注意,您会得到一个空字符串,表示第

考虑以下示例字符串:

abc1235abc53abcXX

123abc098YXabc
我想捕捉abc之间发生的组

e、 g.我应该得到以下几组:

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

(abc(.*?))+
我做错了什么

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

使用:

请注意,您会得到一个空字符串,表示第一个“abc”之前的匹配项。

使用:

请注意,您会得到一个空字符串,表示第一个“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
    序列或字符串的结尾
    $
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
    序列或字符串的结尾
    $

尝试按
abc
拆分字符串,然后使用
列表中的
if
语句删除空结果,如下所示:

[r for r in re.split('abc', s) if r]

尝试按
abc
拆分字符串,然后使用
列表中的
if
语句删除空结果,如下所示:

[r for r in re.split('abc', s) if r]

我猜,我把问题简化得太多了,我不需要拆分它,我需要捕获组,然后应用进一步的正则表达式我猜,我把问题简化得太多了,我不需要拆分它,我需要捕获组,然后应用进一步的正则表达式