Мне нужно разобрать файл, содержащий целые числа, отформатированные как в этом примере (для тестирования алгоритма 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 для separatting этих цифр
Кто-нибудь может дать мне регулярное выражение, чтобы сделать это с помощью 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 целых числа, мне нужно улучшить, чтобы захватить все целые числа в этой строке.
Требуется ли использовать регулярное выражение? – haley
Регулярное выражение так же просто, как '-? \ D +'. –
Я отредактировал сообщение, чтобы показать вам код, который я использую –