正则表达式匹配字符串中[ab_任意数字]实例的问题排查
匹配[ab_数字]格式的正则解决方案
你的正则出错的原因
你写的[[ab_\d+\]]*\]之所以会误匹配到[ddf444],核心是没搞懂正则里方括号的作用:
- 正则中的
[]是字符集的界定符,不是用来匹配字面量方括号的。比如[ab]是匹配单个a或单个b,不是匹配字符串"ab"。 - 你的正则开头的
[[ab_\d+\]]其实是定义了一个字符集,包含[、a、b、_、任意数字、+、]这些字符,后面的*允许这些字符重复任意次,最后再加一个]。这种写法会匹配所有由这些字符组成、以]结尾的内容,自然会误匹配到包含其他字符的方括号内容。
正确的正则写法
要精准匹配[ab_xxx](xxx为任意位数数字)的格式,正确的正则是:
\[ab_\d+\]
各部分解释:
\[:转义后匹配字面量的左方括号(不转义的话会被当作字符集开始)ab_:匹配固定的字符串"ab_"\d+:匹配1位及以上的任意数字(如果允许0位数字,就把+改成*)\]:转义后匹配字面量的右方括号
正则方括号的基础用法梳理
- 匹配字面量方括号:必须用
\转义,即\[和\]。 - 定义字符集:用
[]包裹,比如[0-9]匹配单个数字,[a-zA-Z]匹配单个字母,[^0-9]匹配非数字字符。
内容的提问来源于stack exchange,提问作者Bex
相关产品推荐
相关产品推荐

