正则表达式匹配含冒号及闭合方括号的目标字符串求助
解决正则表达式无法捕获闭合方括号的问题
问题分析
你的正则表达式无法匹配最后一行的闭合方括号],核心原因是结尾的\b(单词边界)失效:]属于非单词字符,其后的空白字符也属于非单词字符,两者之间不存在单词边界,导致正则无法匹配到结尾的]。
修正后的正则表达式
(?<!\S)[\w\[\]{}]+:[\w.\[\]{}]+(?!\S)
关键调整说明
- 替换
\b为空白边界断言:(?<!\S):确保目标内容的左侧是空白字符或文本开头,精准限定左边界;(?!\S):确保目标内容的右侧是空白字符或文本结尾,解决了非单词字符(如])后无单词边界的问题;
- 字符集明确包含
\[\]:转义后避免在字符集中被当作范围界定符,确保方括号能被正确匹配; - 保留原需求允许的字符:下划线、字母数字、方括号、大括号、点号等均在字符集内覆盖。
验证效果
该正则可完美匹配你提供的所有示例内容,包括最后一行的_B:I.Data[0],且兼容Beyond Compare 5使用的PCRE子集引擎。
内容的提问来源于stack exchange,提问作者NoamChompsky
相关产品推荐
相关产品推荐

