繁体   English   中英

在方括号之间提取数字并用逗号分隔

[英]Extract numbers between square bracket and separated by comma

我有一个输入文件:

U10:%x[-2,1]
U11:%x[-1,1]
U12:%x[0,1]q
U13:%x[1,1]
U14:%x[2,1]
U15:%x[-2,1]/%x[-1,1]
U16:%x[-1,1]/%x[0,1]
U17:%x[0,1]/%x[1,1]
U18:%x[1,1]/%x[2,1]

U20:%x[-2,1]/%x[-1,1]/%x[0,1]
U21:%x[-1,1]/%x[0,1]/%x[1,1]
U22:%x[0,1]/%x[1,1]/%x[2,1]

现在我想逐行阅读并提取数字以分配给变量i,j这样:

i=-2, j=1;
i=-1, j=1;
i=0, j=1;
i=1, j=1;
i=2, j=1;
i=-2, j=1; then i=-1, j=1;
i=-1, j=1; then i=0, j=1;
etc.

我正在考虑正则表达式,但奇怪的是这个没有匹配:

FileReader frr = new FileReader("/Users/home/Documents/input.txt");
BufferedReader brr = new BufferedReader(frr);
String linee;

while ((linee = brr.readLine()) != null) {
    String pattern = "\\[(.*?)\\]";
    Pattern regex = Pattern.compile(pattern);               
    Matcher regexMatcher = regex.matcher(linee);                
    System.out.println(regexMatcher.group());
}
brr.close();

如果我使用split,它也会返回非常奇怪的结果:

String[] listItems = linee.replaceFirst("^\\[", "").split("(\\(\\d+\\))?\\]?(\\s*,\\s*\\[?|$)");
System.out.println(listItems);

结果:

[Ljava.lang.String;@c3bb2b8

等等

我该怎么做上述任务?

您应该切换正则表达式以捕获括号内的两个整数。 之后,您可以使用regexMatcher.find()并遍历所有匹配项以获取整数。

String pattern = "\\[(-?\\d+),(-?\\d+)\\]";
Pattern regex = Pattern.compile(pattern);
Matcher regexMatcher = regex.matcher(line);
while (regexMatcher.find()){
    int i = Integer.valueOf(regexMatcher.group(1));
    int j = Integer.valueOf(regexMatcher.group(2));
    ...
}

这将为每个匹配组提供ij

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM