regex 使用正则表达式Java从字符串中提取IP地址

kxkpmulp  于 2022-12-05  发布在  Java
关注(0)|答案(3)|浏览(275)

我想从输入字符串中提取IP地址

[IP-Address]: [ipv4]: [10.124.25.210]

在Java中使用Pattern匹配。:后面有2个空格。
相同的正则表达式是什么?
我尝试的模式是:

Pattern p2 = Pattern.compile("\\[.*\\]\\:  \\[.*\\]\\:  \\[(.*?)\\]");

但显然它没有工作,因为我是新的正则表达式。

sqserrrh

sqserrrh1#

假设您的输入与您在问题中指定的内容完全相同,则可以在此处使用正则表达式替换:

String input = "[IP-Address]: [ipv4]: [10.124.25.210]";
String ip = input.replaceAll(".*\\[|\\]", "");
System.out.println(ip);  // 10.124.25.210

您还可以在正则表达式中更具体一些:

String input = "[IP-Address]: [ipv4]: [10.124.25.210]";
String ip = input.replaceAll(".*\\[(\\d+(?:\\.\\d+){3})\\].*", "$1");
System.out.println(ip);  // 10.124.25.210
mrphzbgm

mrphzbgm2#

要从输入字符串中提取IP地址,可以使用以下正则表达式:

\[IP-Address\]\: \s\[ipv4\]\: \s\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]

此正则表达式将匹配输入字符串并捕获捕获组中的IP地址。下面是如何在Java模式对象中使用此正则表达式:

// Compile the regex pattern
Pattern p2 = Pattern.compile("\\[IP-Address\\]: \\s\\[ipv4\\]: \\s\\[(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\]");

// Create a Matcher object for the input string
Matcher m2 = p2.matcher("[IP-Address]: [ipv4]: [10.124.25.210]");

// Check if the input string matches the regex pattern
if (m2.matches()) {
    // Print the captured IP address
    System.out.println("IP address: " + m2.group(1));
}

此代码应打印以下输出:

IP address: 10.124.25.210
6jjcrrmo

6jjcrrmo3#

对于您的要求,regex(?:\d{1,3}\.){3}\d{1,3}就足够了。

  • (?:-非捕获组的开始
  • \d{1,3}\.-一到三个数字后跟一个点
  • )-非捕获组的结尾
  • {3}-三次(与非捕获组匹配的事物)
  • \d{1,3}-一到三位数
    演示
public class Main {
    public static void main(String[] args) {
        String text = "[IP-Address]: [ipv4]: [10.124.25.210]";
        Matcher matcher = Pattern.compile("(?:\\d{1,3}\\.){3}\\d{1,3}").matcher(text);
        if (matcher.find())
            System.out.println(matcher.group());
    }
}

输出

10.124.25.210

相关问题