我需要解析一个包含整数的文件,格式如下例所示(用于dpll算法的基准测试):
-486 535 0
-563 745 0
125 -430 512 -4 512 -4 0
512 -4 0
667 -19 0
40 -281 512 -4 0
-231 637 0
一般来说,数据的格式是这样的
number number number 0
numbers are separated by space and each line ends with the character 0,
例如,这可能是我想要解析的字符串
545 -565 7 55 0
我要捕捉这些数字。
545是第一个
-565秒
7第三
55第四
0表示分隔这些数字
有没有人能给我一个正则表达式,让我用java来实现这一点?
我使用的代码是:
Pattern pattern = Pattern.compile("(\\-?\\d*)\\s*(\\-?\\d*)\\s*(\\-?\\d*)\\s*0");
Matcher matcher = pattern.matcher(sCurrentLine);
//System.out.print("hou find one");
if (matcher.find()) {
int id;
boolean val;
int i=1;
Clause tempClause = new Clause(counter);
do
{
id = Integer.parseInt(matcher.group(i));
val = id>0;
if (val == false)id*=-1;
tempClause.addLiteral(new Literal (id,val));
System.out.print("id "+id+" the current i:"+i+".\n");
i++;
}
while (i<3);
this.clauses.add(tempClause);
counter++;
System.out.print("the i:"+i+"\n");
}
在这段代码中我捕获了3个整数,我需要改进以捕获该字符串中的所有整数。
3条答案
按热度按时间svgewumm1#
你可以用一个
Scanner
:数据.txt
输出
ds97pgxw2#
为运行上述要求而实施的测试
nvbavucw3#
这可能相当简单。
循环遍历与此正则表达式匹配的文件。
每次采集第1组的内容
在空白处拆分(使用
"\\s+"
)输出: