正则表达式标题分组标准化:请求协助实现内容归类
正则提取Inclusion/Exclusion Criteria内容解决方案
核心正则表达式
推荐使用带单行模式的正则,确保能跨多行捕获内容:
(?s)Inclusion Criteria\s*(.*?)\s*Exclusion Criteria\s*(.*)
如果需要兼容仅存在其中一个标题的场景,可以用:
(?s)(?:Inclusion Criteria\s*(.*?)(?=\s*Exclusion Criteria|$))?(?:Exclusion Criteria\s*(.*))?
正则说明
(?s):开启单行模式,让通配符.可以匹配换行符,实现跨多行内容的捕获Inclusion Criteria\s*:精准匹配标题,\s*匹配标题后任意数量的空白(包括换行、空格)(.*?):非贪婪捕获Inclusion Criteria下的所有内容,直到遇到Exclusion Criteria或文本结尾(针对兼容版)Exclusion Criteria\s*:匹配第二个标题,同样用\s*处理标题后的空白(.*):贪婪捕获Exclusion Criteria下的所有剩余内容
示例演示
输入文本
Inclusion Criteria
- Age between 18 and 65
- No prior history of heart disease
Exclusion Criteria
- Pregnant or breastfeeding women
- History of allergic reactions to study drugs
捕获结果
- Inclusion Criteria组(第一个捕获组):
- Age between 18 and 65 - No prior history of heart disease - Exclusion Criteria组(第二个捕获组):
- Pregnant or breastfeeding women - History of allergic reactions to study drugs
原正则问题分析
你之前写的Inclusion Criteria\s*(.*?)\s*Exclusion Criteria|Inclusion Criteria\s*(.*)(\n\n).*$存在两个问题:
- 未开启单行模式,
.无法匹配换行,导致跨多行的内容无法被完整捕获 - 使用分支结构
|,只能单独匹配「有Inclusion和Exclusion」或「只有Inclusion」的场景,无法同时捕获两个组的内容
内容的提问来源于stack exchange,提问作者Angie
相关产品推荐
相关产品推荐

