谁能帮我用正则表达式从下面的文本中提取出'Title:'后面的文本短语吗?(我只是把文本加粗,以清楚地描述要提取的部分)
标题:肛管直肠瘘(瘘管)程序规范:生效日期:7/1/07标题: 2003247 或以前的生效日期)标题:慢性心力衰竭ST2检测描述/背景心脏衰竭心衰是许多心血管疾病之一,是发病率的主要原因以及全世界的死亡率。术语"心力衰竭"(HF)是一种复杂的临床综合征。我使用正则表达式:
(?:Title: n+(.*))|(?:Title:n+(.*))|(?<=Title: )(.*)(?=Procedure)
然而,它似乎没有正确地捕获术语!我使用Python 2.7.12
我建议使用
Title:s*(.*?)s*Procedure|Title:s*(.*)
参见regex演示。
细节:
-
Title:
-文字Title:
-
s*
- 0+空白 -
(.*?)
-组1:除换行符号外的任何0+字符尽可能少,直到第一个 -
s*Procedure
- 0+空格+字符串Procedure
-
|
-或 -
Title:s*
-Title:
string + 0+ whitespaces -
(.*)
-第二组:除换行符号外,尽可能多地使用零或更多字符(行的其余部分)。
import re
regex = r"Title:s*(.*?)s*Procedure|Title:s*(.*)"
test_str = ("Title: Anorectal Fistula (Fistula-in-Ano) Procedure Code(s):nn"
"Effective date: 7/1/07nn"
"Title:nn"
"2003247nn"
"or previous effective dates)nn"
"Title:nn"
"ST2 Assay for Chronic Heart Failurenn"
"Description/Backgroundnn"
"Heart Failurenn"
"HF is one among many cardiovascular diseases that comprises a major cause of morbidity and mortality worldwide. The term “heart failure” (HF) refers to a complex clinical syndrome .")
res = []
for m in re.finditer(regex, test_str):
if m.group(1):
res.append(m.group(1))
else:
res.append(m.group(2))
print(res)
# => ['Anorectal Fistula (Fistula-in-Ano)', '2003247', 'ST2 Assay for Chronic Heart Failure']