0

我是正则表达式的新手,所以很难编译我自己的模式。

基本上我正在从我的 android 手机上读取 LogCat,并试图将这个字符串分成几部分以便能够在 TextView 中显示它

这是我试图标记的实际字符串。 “07-06 12: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 地址的提示。

4

1 回答 1

1

好吧,对于正则表达式部分,我可以提供帮助。

正则表达式:

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

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

对于 RegExp,我使用了一个网站http://rubular.com/,它对我的​​工作流程很有帮助。我可以输入任意数量的“测试用例”并开始编写正则表达式代码。


根据下面的评论进行编辑。

而不是重新发明轮子。我发现了一篇关于 IPv4 Regex 的精彩文章: How do I write a regular expression that match 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])$/

它又长又复杂。但是在写完之后,应该可以很好地理解它的实际作用。

根据我的经验,正则表达式成功率越复杂和可靠,它可能失败的可能性就越大。我建议永远不要依赖正则表达式来获取关键数据......找到另一种方法,总有:)

于 2012-07-13T16:38:13.583 回答