正则提取备注需先识别格式特征再设计模式:如【备注】([^】]+)、(([^)]+))、备注s:s([^。 ]+)等,用捕获组提取内容,注意转义、边界与多行处理。

正则表达式提取备注信息的关键在于:先明确备注的固定格式特征(比如前缀、分隔符、括号结构),再用对应模式精准匹配,最后通过捕获组提取目标内容。
识别备注的典型格式特征
常见备注格式有几种固定模式,提取前需先观察样本:
-
带标签前缀:如
【备注】天气不错、备注:明天开会 -
括号包裹:如
(临时调整)、[紧急]、【待确认】 -
冒号/等号分隔:如
说明:用户已同意、状态=已完成 -
行首或行尾标记:如每行末尾的
#test或开头的※注意:
写出针对性的正则模式
根据格式选择合适写法,注意转义和边界控制:
- 匹配
【备注】xxx类型:【备注】([^】]+)——[^】]+表示“非右括号的任意字符”,避免跨多个【】误匹配 - 匹配括号内任意内容:
(([^)]+))(圆括号)、[([^]]+)](方括号)、【([^】]+)】(中文括号) - 匹配冒号后文本(跳过空白):
备注s*:s*([^。 ]+)——s*处理空格变化,[^。\n]+停在句号或换行前,防贪心截断 - 提取行尾标签:
#(w+)$(加m标志支持多行)
在不同语言中安全使用捕获组
匹配只是第一步,真正要的是括号里的内容。务必用捕获组 () 包裹目标部分,并正确调用:
- Python 示例:
re.findall(r'【备注】([^】]+)', text)直接返回所有匹配的备注内容列表 - JavaScript:
text.match(/【备注】([^】]+)/g)?.map(m => m.replace(/【备注】/, ''))或更稳妥用RegExp.exec循环取match[1] - Notepad++ / VS Code 查找替换:
【备注】(.+)→ 替换为$1即可提取纯文本
避开常见坑点
实际提取时容易出错的地方:
- 没加
?导致贪婪匹配:如【.*】会从第一个【吃到最后一个】,应写成【(.*?)】或更推荐【([^】]*)】 - 忽略大小写或全半角:中文括号【】和英文[]不同,冒号“:”和“:”也不同,需按实际文本统一处理
- 换行符未启用:多行文本中若备注跨行,需加
s(dotall)标志让.匹配换行,或改用[sS] - 特殊字符未转义:如匹配
status=done,等号不用转义,但若写status=当字面量,就别误加反斜杠











