正则多捕获组匹配重复同结构内容的实现方案咨询
正则表达式提取重复结构问题的解决方案
我是正则表达式新手,遇到一个未解决的问题:手里有一份带特定结构的文件,想提取其中重复出现的同结构内容(比如N1、N2这类)用来解析到类里。
我写了正则表达式:static\s+abc_p\s+ABC_P\[\s*\]\s*=\s*\{(\n((?:[^\{]*\{\n([^\}]*)\}\,\n\s*\}\,\n)))[^;]*,但它只能匹配第一个捕获组。试了加+只会匹配最后一个实例,加+?还是只匹配第一个。
想问能不能修改正则直接捕获所有N1、N2…NX这类结构?还是得先找到第一个组后删除,再继续查找直到遇到;?我的需求是把每个N1、N2分别抓到对应捕获组里。
可行的拆分匹配方案
- 第一步:先匹配整个数组块,使用正则:
static\s+abc_p\s+ABC_P\[\]\s*=[^;]+; - 第二步:在第一步得到的数组块内容里,用下面的正则遍历提取每个目标结构:
\{(\s*[^}]+)
内容的提问来源于stack exchange,提问作者Rokrait
相关产品推荐
相关产品推荐

