正则表达式求解:如何将匹配到的内容变为数组?

新手上路,请多包涵

需要匹配的内容

···1
StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
childAspectRatio: 0.8),
delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
return Container(
child: Image.network(posts[index].imageUrl, fit: BoxFit.cover),
);
}, childCount: posts.length),
);
}
}
···ed

···1
StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
childAspectRatio: 0.8),
delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
return Container(
child: Image.network(posts[index].imageUrl, fit: BoxFit.cover),
);
}, childCount: posts.length),
);
}
}
···ed

目标

我现在需要将···1···ed中的内容单独匹配出来,也就是一对···1···ed对应数组中的一个值。
自己捣鼓的表达式:\···1[\s\S]*...ed

仍存在的问题

上述的表达式会将全局的内容都匹配出来,所以希望各位大佬们帮帮忙。

阅读 3k
1 个回答
var regex=/·{3}1([\s\S]*?)·{3}ed\b/mg;
var match=null;
var result=[];
while((match=regex.exec(str))!=null){
    result.push(match[1]);
}

由于你用的是贪婪模式的,所以会匹配全部,在*号后面加上?号,变成懒惰模式就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题