首页 > 解决方案 > Python 2:正则表达式在两个字符串之间的任意位置获取文本

问题描述

我正在尝试找到一个正则表达式来获取说明一:和说明二之间的文本:

诀窍是文本可能存在也可能不存在,它可能与解释一在同一行,也可能在解释一的下一行。以下代码中的当前正则表达式,在找到解释二之前的文本后添加了一行:

任何指针都赞赏只是让文本忽略额外的空行。

import re

STRING="""Explanation One:
Blah Blah

Explanation Two: ndnlnlkn
"""

pattern = r'Explanation One:[\r\n ].*(?=Explanation Two:)+')'
regex = re.compile(pattern, re.IGNORECASE)
print regex.search(STRING).group()

输出:

Explanation One: 
Blah Blah

标签: regexpython-2.7

解决方案


要匹配说明一:和说明二:之间的文本,您可以使用DOTALL标志将其捕获在一个组中,或者使用内联修饰符 (?s)使点与换行符匹配。

Explanation One:\s*(.*?)\s*Explanation Two

解释

  • Explanation One:从字面上匹配
  • \s*匹配零次或次空白字符
  • (.*?)在一个组中捕获任何字符零次或更多次非贪婪
  • \s*匹配零次或次空白字符
  • Explanation Two从字面上匹配

正则表达式演示

演示 Python


推荐阅读