在Java中使用Regex进行模式匹配

问题描述 投票:0回答:1

我有一个流,我从中读取一个如下所示的字符串:

event.tag.report tag_id=0xABCD0029605, type=ISOB_80K, antenna=1, frequency=918250, rssi=-471, tx_power=330, time=2017-12-18T19:44:07.198
                        ^^^^^^^^^^^^^

我正在尝试使用正则表达式来获取我读过的每个字符串的突出显示部分(由^^^^加下划线)。我对正则表达式的模式如下:

.*\\s(tag_id=)(.{38})(\\,\\s)(.*)$

但是,这对于长度大于或小于38位的tag_ids不起作用。

有人可以帮我一个字符串模式,这将帮助我获得字符串中突出显示的区域,与其大小无关吗?

java regex
1个回答
1
投票

看起来好像你想要所有十六进制字符:

"tag_id=(0x[A-F0-9]+)"

所以

Pattern pattern = Pattern.compile("tag_id=(0x[A-F0-9]+)");
Matcher matcher = pattern.matcher("event.tag.report tag_id=0x313532384D3135374333343435393031, type=ISOC");
if (matcher.find())
    System.out.println(matcher.group(1));

收益:

0x313532384D3135374333343435393031
© www.soinside.com 2019 - 2024. All rights reserved.