2012-07-13 141 views
0

是新来的正则表达式,所以我有一个很难编译我自己的模式。构建正则表达式

基本上是从读我的Android手机logcat的,我试图打破这种字符串成片能在TextView中

显示它这是实际的字符串我试图令牌。

很能 “十二月7日至6日:18:45.790:W/dalvikvm(571)::TaintLog OSNetworkSystem.write(91.121.171.39)与标签0x400的数据= [POST/HTTP/1.1接收到的数据”检索使用扫描仪方法“标记”后的数字,但现在我需要从OSnetworkSystem.Write(xxx.xxx.xxx.xxx)提取IP地址

任何人都可以提供一些关于使用什么的提示能够额外获得IP地址。

回答

1

那么,对于正则表达式的一部分,我可以帮上。

正则表达式:

([0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}) 

愿意给定的字符串匹配中的任何IP地址。

正规表达式我做了一个网站,http://rubular.com/已真正与我的工作流程帮助。我可以投入任意数量的“测试用例”并开始编写正则表达式代码。


按照下面的注释进行编辑。

而不是重新发明轮子。我发现在IPv4上的正则表达式一个伟大的写了起来: How do I write a regular expression that matches an IPv4 dotted address?

这基本上说:

/^0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$/ 

这是长期和复杂的。但是在写完之后,应该让你对它的实际操作有一个很好的理解。

以我的经验,更复杂的& relient我们用正则表达式的成功率得到的,就越是会可能会失败。我建议永远不要依靠正则表达式关键数据 ...找到另一种方式,总是有:)

+2

这里有一个正则表达式cheatsheet的链接,以建立其他正则表达式的额外帮助:http://www.cheatography .com/davechild/cheat-sheets/regular-expressions/ – ardent 2012-07-13 16:40:51

+0

允许IP地址的值超过255吗?如果没有,你需要一个更复杂的正则表达式来处理它。 – BlackVegetable 2012-07-13 16:59:22

+0

同意BlackVegetable。你可以得到更多的深入。我应该加一点提醒。永远不要依靠RegEx来防止欺骗。 RegEx几乎总是会收集错误的东西。 @ardentsonata:优秀的小抄!最喜欢那一个。 – CrazyVipa 2012-07-13 17:14:05