如何在正则表达式中获取特定组

时间:2013-11-22 10:48:02

标签: regex

任何人都可以帮助我从所有组值中获取特定的组值。

在下面给出的字符串中,我必须获取特定的IP,如第一个IP或第二个IP或第三个IP。现在我写了正则表达式以匹配IP值,但它没有给我具体的。

示例字符串:

management:10.103.2.1/52488 (10.105.1.50/52488) to a Identity b:10.105.1.53/443 (10.105.1.53/443)

My Regex:

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

通过应用此IP地址选择所有的IP地址,而我想在字符串中选择特定的IP地址(字符串中的第一个ip地址或字符串中的第二个ip地址等)

1 个答案:

答案 0 :(得分:1)

如果您拒绝使用在软件中多次调用find的简单逻辑,您可以找到n出现的模式p但是应用在不情愿匹配任意文本n之前的模式中(?:.*?p){n}次,其中n是所需的nimber和p模式。所以在你的情况下,模式是:

(?:.*?\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}

找到第三个IP地址。您已定义的四个组将包含最后一次匹配的四个十进制数,在成功find操作后读取第三个IP地址。当然,如果您想要对整个地址使用完整的String,则可以将您的四个组与另一个组一起包含在内。那就是小组1