Regex从带连字符的字符串中提取IP地址



我有一个文本字符串,其中包含一个带连字符和单词的IP地址。我想使用一个正则表达式从中提取IP地址,该表达式还将连字符转换为句点。

因此,为了澄清,在Java或Python:等代码中,是否可以提取IP地址并将连字符替换为句点,而不使用正则表达式

我有什么

ip-10-179-50-22.corp.dept.org.uk

我想要什么

10.179.50.22

我想我需要根据数字提取4个组,并将它们与句点连接起来,但我不知道如何做到这一点,或者如果只使用regex就可以实现这一点?

我尝试过的

(d{2,3}-d{2,3}-d{2,3}-d{2,3})

这使我返回了10-179-50-22,但我不知道如何在匹配组上进行替换。

编辑

我编辑了这个问题,以澄清我正试图找到一个只查找正则表达式并替换为正则表达式的解决方案。

总之,看起来你不能只使用正则表达式,但正则表达式需要与一些代码一起使用才能实现这个

我们不知道你使用的是哪种语言,但很多语言都有.replacement((,你可以用它来更改-for。或者经过一点调整的事件子字符串应该可以解决您的问题。

请参见regex101示例。

Regex:

.*b(d{2,3})-(d{2,3})-(d{2,3})-(d{2,3})b.*

替代:

1.2.3.4

结果:

10.179.50.22

请注意,我只是使用您提供的正则表达式来匹配IP地址部分,而不是使用更准确的正则表达式匹配任何有效的IP地址。

如果您能够使用sed命令,这个regex就可以完成任务。它使用了你建议的4组。

sed -i 's/^ip-([0-9]*)-([0-9]*)-([0-9]*)-([0-9]*).*/1.2.3.4/g'

它用10.179.50.22代替ip-10-179-50-22.corp.dept.org.uk。你可以在上面测试https://sed.js.org.

最新更新