Как извлечь IP: PORT из строк Java - PullRequest
2 голосов
/ 21 ноября 2011

У меня есть текстовый файл, и зациклить файл, как этот:

for ( int i = 0; i < this.textLines.size(); i++ ) {
    String tempString = textLines.get( i );

Так что теперь у меня есть tempString, содержащий что-то вроде:

46.102.241.199:3128 0.2990 Transp. NN N 100% 2011-11-19 17:56:02

Я хочу вернуть часть IP: PORT, в данном случае: 46.102.241.199:3128

Как я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 21 ноября 2011

Это регулярное выражение даст вам IP с дополнительным портом.Если всегда есть порт, удалите вопросительный знак в конце строки.

\d{1,3}(?:\.\d{1,3}){3}(?::\d{1,5})?

Обратите внимание, что это упрощенная проверка IPv4, и она будет соответствовать только тому, что это правильный формат, а не правильный,И не забудьте добавить дополнительную обратную косую черту, чтобы избежать каждой обратной косой черты в Java.

Вот пример в Java:

String text = "46.102.241.199:3128 0.2990 Transp. NN N 100% 2011-11-19 17:56:02";
String pattern = "\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?";

Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Вывод:

46.102.241.199:3128
2 голосов
/ 21 ноября 2011

Не думаю, что для этого нужно регулярное выражение, это возможно с StringTokenizer.

import java.util.ArrayList;
import java.util.StringTokenizer;

public class SOScrap{
public static void main(String[] args) {
    ArrayList<String> as = new ArrayList<String>();
    ArrayList<String> asa = new ArrayList<String>();
    String s = "46.102.241.199:3128 0.2990 Transp. NN N 100% 2011-11-19 17:56:02";
    StringTokenizer st = new StringTokenizer(s, " ");
        while(st.hasMoreTokens()){
              as.add(st.nextToken());
        }

    StringTokenizer astk = new StringTokenizer(as.get(0), ":");

        while(astk.hasMoreTokens()){
           asa.add(astk.nextToken());
        }
    System.out.println(asa);
}

}

Выходы

[46.102.241.199, 3128]

Теперь вы можете получить доступ к элементам в ArrayList. Первый индекс содержит IP, а второй - порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...