使用RegEx从长字符串中捕获特定的位置值

时间:2017-11-22 21:21:19

标签: java regex parsing

我有一个长字符串,我想要解析并从特定位置捕获一个特定值。字符串看起来像这样(粗体的具体值):

  

{姓名:dave,TaskTime:1503485101000,日志:5 12345678 test-12345 1.1.1.1   2.2.3.3 111 22222 1 11 3456 1503485101 1503485102 TEST CORRECT ,InTime:1503485105278,Id:123456789}

主要问题是,我需要找到一个正则表达式模式来捕获组中的值。是否有任何RegEX模式可以使用单个正则表达式提取该值? 有人可以提供任何建议吗?我通过堆栈搜索尝试了几种不同的方法。我只是设法使用此匹配某些字段:(?:|[=\s])(\w{1,})(?=\s|$)但这还不够。

1 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式:

(?<=(?:(?:\d{1,3}\.){3}\d{1,3}\s){2}(?:\d+\s){3})

说明:

>>1.1.1.1 2.2.3.3 111 22222 1 <<

正面看是否正面,旨在找到2个连续的ip地址,然后是3个数字:

_id:5a0f6c61d1154f2f9983ad74
name:"colla"
weight:"2"
status:"+"
time_exp:2017-11-18 00:37:31.946

_id:5a0f6c61d1154f2f9983ad74
name:"pepsi"
weight:"3"
status:"+"
time_exp:2017-11-18 00:37:31.946

_id:5a0f6c61d1154f2f9983ad74
name:"colla"
weight:"3"
status:"+"
time_exp:2017-11-18 00:37:31.946

如果找到此类模式,则会捕获以下数字。在我们的例子中它是11