Попробуйте это, он принимает вашу строку с несколькими линиями в качестве входных данных, и выплевывает номера (IP-адресов и портов, судя по нему) построчно.
Поскольку сам вопрос является регулярным выражением, я не прилагал больших усилий в процессе чтения, поэтому я просто использовал сканер и не беспокоил чтение/запись текстового файла, я полагаю, что у вас уже есть эта часть.
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainRegex {
/**
* @param args
*/
public static void main(String[] args) {
String input = "SrcAddr: 0.0.21.201\n"+
"DstAddr: 7.202.10.100\n"+
"NextHop: 0.33.189.142\n"+
"InputIf: 19\n"+
"OutputIf: 50715";
Scanner scanner = new Scanner(input);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String output = matchString(line);
System.out.println(output);
}
scanner.close();
}
public static String matchString(String input){
String regex = "(?:\\w*:)((?:\\d+\\.?)*)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
if (m.find()) {
String matched = m.group(1);
return matched;
}
return null;
}
}
Выход:
0.0.21.201
7.202.10.100
0.33.189.142
19
50715
В цикле сканирования можно обработать строку. Я не мог понять ваш вопрос, если вы только хотели получить числа или заменить каждую строку на String [name] = "[number]". Если это так, вам просто нужно слегка вмешаться в цикл сканера, а также удалить группы, не захватывающие в регулярном выражении (это означает, удалить «?:» Перед \ w), чтобы он также захватывал слова ,
Надеюсь, это поможет!
Можете ли вы показать, что вы пробовали? – Kieveli
Этот вопрос кажется не по теме, потому что он не показывает никаких исследований до публикации. – OGHaza