Python正则表达式模式匹配:匹配括号(T1,T2,T3,T4)前后3到4个单词
Python 正则匹配括号前后3-4个单词解决方案
实现思路
通过正则分组分别捕获括号前缀、括号内容、括号后缀三个部分,再对结果做简单清洗即可得到括号前后相邻的3~4个目标单词。
完整可运行代码
import re # 原始输入字符串 raw_str = "First, after preprocessing, citation data are carefully analysed for the analysis tasks (T1, T2, T3, T4) to establish a new ranking model." # 正则规则:分别捕获括号前3-4个单词、括号内容、括号后3-4个单词 regex = r'((?:\b\w+\b\W+){3,4})\([^)]+\)((?:\W+\b\w+\b){3,4})' res = re.search(regex, raw_str) if res: # 清洗结果,去除多余标点和空白符 before_words = [item.strip(',. ') for item in res.group(1).split() if item.strip(',. ')] after_words = [item.strip(',. ') for item in res.group(3).split() if item.strip(',. ')] print("括号前3-4个单词:", before_words) print("括号后3-4个单词:", after_words)
运行输出结果
括号前3-4个单词: ['for', 'the', 'analysis', 'tasks'] 括号后3-4个单词: ['to', 'establish', 'a', 'new']
规则说明
- 正则中的
{3,4}代表匹配3到4个单词,如果你只需要固定匹配3个单词,直接把该参数修改为{3}即可 - 中间的
\([^)]+\)可以匹配任意括号包裹的内容,如果你只需要匹配T1-T4格式的括号内容,可以替换为\(T[1-4](?:, T[1-4])*\)缩小匹配范围 \b为词边界标识符,可以避免把标点符号误识别为单词的一部分
内容的提问来源于stack exchange,提问作者Muhammad Bilal Rehman
相关产品推荐
相关产品推荐

