[英]how to escape brakets in java regex?
我有一个像这样的字符串:
[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]
如何使用正则表达式提取[1359873374000,281197568]
类的每个项目?
我已经编写了这段代码,但是它不起作用:
String[] parts = mainstr.split("\\[[0-9],[0-9]\\]");
您的正则表达式匹配[1,2]
。 您必须添加一个乘数:
"\\[[0-9]+,[0-9]+\\]"
编辑:我不认为split()
会做你想要的。 看一下Matcher类 。
Matcher类的解决方案:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String sourceString = "[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]";
Pattern pattern = Pattern.compile("\\[[0-9]+,[0-9]+\\]");
Matcher matcher = pattern.matcher(sourceString);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
这将为您提供号码对的所有出现。 如果要单独使用数字,可以像这样捕获它们: "\\\\[([0-9]+),([0-9]+)\\\\]"
。 但是,您将不得不扩展示例。
你应该把它分解
(?<=\\]),(?=\\[)
[0-9]
精确匹配一位数字。 如果要匹配数字序列,请使用[0-9]*
。 如果要匹配非空数字序列,请使用[0-9]+
。 在您的情况下,您可能需要执行"\\\\[[0-9]+,[0-9]+\\\\]"
,或者同样是"\\\\[\\\\d+,\\\\d+\\\\]"
因为\\d
在Java正则表达式中表示“数字”。
这是不完美的,因为它丢失了一些括号,但至少数字是完整无缺的并正确分组:
String[] parts = mainstr.split("\\D,\\D");
您可能希望拆分'],[',而不是搜索的整个模式。 尝试这个:
String[] parts = mainstr.split("\\\\],\\\\["); // Never sure when to use double or quadruple slashes.
之后,您可能需要更换支架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.