2012-08-01 123 views
0

我已经得到形式IP的IP地址列表:端口,但他们中的一些是畸形的,比如像这样:正则表达式多行:IP修正

OCTETS ARE EXAMPLES, It doesn't matter that they are over 255 
12.345.678.90:12345 
58412.345.678.91:12391 
12.345.678.92:1823 
12.345.678.93:80 

我要剥离出额外的数字从第二个IP,使用正则表达式,因为它经常发生,我有〜2000这些通过筛选

我的第一个想法是找到:\r\n[0-9]{3,15}(.*\r\n[0-9]{1,3})和替换\2\1\2,但它似乎没有影响。

我不得不假设下一行有相同的前导数字,这是不必要的。如果任何人都可以向我展示一种解决方案,只有在下一行的数字包含在点之前时才会修复它,这将非常感激。

编辑:我使用记事本+ +的这个表达式

而且,即使你使用八位位组检测,如果我想的数字说,12,和第一个字节是112?

+1

所有这些都是无效的IP地址,每个八位字节需要在0到255之间(包括0和255)。 – 2012-08-01 17:33:15

+1

根据没有点的事实判断,它是1234567890,可能你不认为它是一个例子吗? – Dangercrow 2012-08-01 17:37:09

+0

我明白了,但任何适用于您的示例的答案都会错误地验证IP地址。 – 2012-08-01 17:41:00

回答

0

尝试\1

+0

作为一个无效的正则表达式:( – Dangercrow 2012-08-01 17:39:46

+1

我认为\和'('的位置切换。 – Wiseguy 2012-08-01 17:46:38

+0

^这工作正常后,谢谢:D – Dangercrow 2012-08-01 17:48:07

0

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

该更换^\d+(\d{2}\.)应匹配任何有效的IP地址。 (即不是“257.4.33.134”,因为257是太大)

注:这将匹配关你的例子,因为字节是太大

欢迎的StackOverflow!

+0

匹配IP,但不是端口,但主要问题是我需要使用下一行修复的错误八位组。 – Dangercrow 2012-08-01 17:43:33

+0

此正则表达式将返回从12345.67.89.12开始的45.67.89.12,这似乎是你要求的,我不知道你为什么会接受一个匹配格式不正确的IP的答案,尽管 – Zaq 2012-08-01 18:11:28

+0

你的正则表达式从84174.71.37.17提供了什么?八位字节在这种情况下是不需要的。 – Dangercrow 2012-08-01 21:24:49