正则表达式如何仅匹配长度不超过指定最大值的方括号内容
问题原因说明
你之前编写的\[.*?\]{,10}无法生效,是因为量词{,N}的作用范围是它前面紧邻的单个规则单元,这里相当于限制右方括号\]最多重复10次,和限制括号内部内容长度的需求完全不匹配。
对应需求的正则写法
1. 匹配包含方括号在内的完整内容(要求内部字符长度≤10)
正则:\[.{0,10}?\]
说明:将原规则中代表任意长度惰性匹配的.*?替换为.{0,10}?,直接限制方括号包裹的内容最多只有10个字符,惰性匹配规则可以避免跨多个括号匹配的问题。
如果需要更严谨的匹配(避免内部出现方括号、嵌套匹配错误),可以用如下写法:\[[^\[\]]{0,10}\]
2. 仅匹配方括号内部的内容(要求内部字符长度≤10,不需要匹配方括号本身)
正则:(?<=\[).{0,10}?(?=\])
说明:在零宽前后断言的包裹区间内,将原规则的.*?替换为.{0,10}?即可实现长度限制。
内容的提问来源于stack exchange,提问作者Uwe.Schneider
相关产品推荐
相关产品推荐

