在输出中也包括搜索到的正则表达式文本

问题描述

我正在使用正则表达式 re.findall(r"[0-9]+(.*?)\.\s(.*?)[0-9]+",text)获取下面的文本

8    EXT./INT. MOnorAIL - MORNING 8
9    EXT. CITY SCAPE/MOnorAIL - CONTINUOUS 9

但是我当前的输出没有前缀和后缀数字。我试图在输出中也包含前缀数字,如下所示。

9    EXT. CITY SCAPE/MOnorAIL - CONTINUOUS 

非常感谢任何帮助!提前致谢。

(当前输出如下)

current output

解决方法

你可以使用

(?m)^([0-9]+)\s*(.*?)\.\s(.*?)(?:\s*([0-9]+))?$

参见regex demo。 *详情

  • (?m) - 多行修饰符
  • ^ - 字符串的开始
  • ([0-9]+) - 第 1 组:一位或多位数字
  • \s* - 零个或多个空格
  • (.*?) - 第 2 组:除换行符以外的零个或多个字符尽可能少
  • \.\s - 一个点和一个空格
  • (.*?) - 第 3 组:除换行符以外的零个或多个字符尽可能少
  • (?:\s*([0-9]+))? - 可选出现零个或多个空格,然后第 4 组捕获一个或多个数字
  • $ - 行尾。