regex - 用 "],[" 分割字符串
问题描述
我知道一个反斜杠/
可以用来转义一些特殊字符,比如(
,.
双反斜杠//
可以用来直接转义字符串中的特殊字符。
我想拆分:
"[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]"
通过],[
每个子数组之间。
如果我想通过将它们拆分为"[[0,0,1,0,0", "0,0,0,0,0","0,0,0,1,0","1,1,0,1,1", "0,0,0,0,0]]"
第一个来获取所有子数组,我该怎么办。如果您对如何将它们直接转换为仅包含数字的子数组有更好的想法,"0,0,1,0,0", "0,0,0,0,0","0,0,0,1,0","1,1,0,1,1", "0,0,0,0,0"
那就更好了。
解决方案
由于这两个[
和]
at 特殊字符regex
都需要转义它们。
您可以尝试以下方法:
str.split("\\],\\[");
测试代码:
String str="[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]";
String[] strs = str.split("\\],\\[");
for(String s:strs){
System.out.println(s);
}
输出结果:
[[0,0,1,0,0
0,0,0,0,0
0,0,0,1,0
1,1,0,1,1
0,0,0,0,0]]
如果要删除重复的[[
and ]]
,只需在拆分前添加以下代码:
str = str.substring(2);
str = str.substring(0, str.length()-2);
更新的答案,如果你想消除中间和两端的所有括号regex
,你可以编写正则表达式,\[?\[((\d,)+\d)
然后获取每个匹配记录数据的第一组,下面是代码:
String str = "[[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]]";
String regex = "\\[?\\[((\\d,)+\\d)";
Pattern r = Pattern.compile(regex);
Matcher m = r.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
输出是
0,0,1,0,0
0,0,0,0,0
0,0,0,1,0
1,1,0,1,1
0,0,0,0,0
推荐阅读
- android - 在 Xamarin Forms Api 27、Android 8.1 Oreo 中禁用条目的自动对焦
- python - 两个数据框,计算重复的ID并与另一个具有相同ID的数据框合并?
- c# - Apple 支付抑制 - 我做错了什么?
- javascript - 获取货币值作为数字
- python - 使用 JAX 进行梯度累积
- firebase - 使用 firebase 在 React Native 中编辑和更新图像
- go - js 客户端连接到 go-socket.io 服务器,但得到重复重新连接
- python - 点云内的open3d高亮点
- string - 在 Fortran 中,空字符串和未初始化的字符串有什么区别?
- javascript - React Native GiftedChat 消息排序