简单 Java 正则表达式从封闭字符串中提取 IP 地址和端口
Simple Java regex to extract IP address and port from enclosing string
考虑一对 IPv4
或 IPv6
地址和端口,由 /
或 :
分隔,例如
10.10.10.10:1234
端口是可选的,所以字符串如
10.10.10.10/
10.10.10.10:
10.10.10.10
也有效。 address/port 对后面可以跟 space 或逗号字符,它是更长的封闭字符串的一部分。
从封闭字符串中提取单独字段中的 2 个值的非常简单的正则表达式是什么(不使用字符串操作函数)?
例如,像这样的表达式
(?<address>[^\s,]+[^\s,:\.])((/|:)(?<port>\d*))?
提取同一个字符串中的地址和端口。
这里的目标是使用最简单的正则表达式实现提取,即使它不是 100% 准确(即,即使它也匹配其他字符串)。
InetAddressValidator validator = InetAddressValidator.getInstance();
if (validator.isValid(ipAddress) {
// cool, isn't valid
}
throw new InvalidAddressException(ipAddress);
([0-9.]*)(\/|:)([0-9]*)
这是正则表达式。第一组给你IP。第三组给你端口号。中间组给出分隔符,即 / 或 : 用于交替。可以忽略。
考虑一对 IPv4
或 IPv6
地址和端口,由 /
或 :
分隔,例如
10.10.10.10:1234
端口是可选的,所以字符串如
10.10.10.10/
10.10.10.10:
10.10.10.10
也有效。 address/port 对后面可以跟 space 或逗号字符,它是更长的封闭字符串的一部分。
从封闭字符串中提取单独字段中的 2 个值的非常简单的正则表达式是什么(不使用字符串操作函数)?
例如,像这样的表达式
(?<address>[^\s,]+[^\s,:\.])((/|:)(?<port>\d*))?
提取同一个字符串中的地址和端口。
这里的目标是使用最简单的正则表达式实现提取,即使它不是 100% 准确(即,即使它也匹配其他字符串)。
InetAddressValidator validator = InetAddressValidator.getInstance();
if (validator.isValid(ipAddress) {
// cool, isn't valid
}
throw new InvalidAddressException(ipAddress);
([0-9.]*)(\/|:)([0-9]*)
这是正则表达式。第一组给你IP。第三组给你端口号。中间组给出分隔符,即 / 或 : 用于交替。可以忽略。