Как я могу извлечь IP из строки в Java - PullRequest
0 голосов
/ 06 ноября 2019
String st = "64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523"
String ip, url;
int index = line.indexOf(" - - ");
ip = line.substring(0, index)

это извлечет ip, и мне нужно извлечь ссылку, которая после GET, в две разные переменные, я извлекаю ip без использования regx, но не могу получить ссылку.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Вы можете split() String на произвольное количество пробелов и взять первый элемент результата:

public static void main(String[] args) {
    String st = "64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] \"GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1\" 200 4523";
    // in split, use a regular expression for an arbitrary amount of whitespaces
    String[] splitResult = st.split("\\s+");
    // take the first item from the resulting array
    String ip = splitResult[0];
    // and print it
    System.out.println(ip);
}

Ваш String должен быть действительным, тогда это будетработа ...

Вывод просто

64.242.88.10
0 голосов
/ 06 ноября 2019

Вопрос должен быть освещен, следующий код показывает, как можно использовать регулярные выражения для извлечения параметров IP и GET.

String st = "64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] \"GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1\" 200 4523";
Pattern pat = Pattern.compile( "(\\d+\\.\\d+\\.\\d+\\.\\d+)(?:(?!GET).)*GET ([^ ]*)" );
Matcher mat = pat.matcher( st );
while ( mat.find() ) {
    System.out.println( "1: " + mat.group( 1 ) + "; 2: " + mat.group( 2 ) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...