regex 匹配正/负浮点数、整型数或字符串的正则表达式

xqkwcwgp  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(119)

我希望能够匹配和解析从文件中读取的一些参数,例如:
"类型:整型,寄存器ID:15,值:123456""类型:整型,寄存器ID:16,值:-456789""类型:双精度型,寄存器ID:17,值:123.456""类型:双精度型,寄存器ID:18,值:-456.789""类型:布尔型,寄存器ID:19,值:真""类型:布尔型,寄存器ID:20,值:假""类型:字符串型,寄存器ID:17,值:测试集数据寄存器"
我得到了下面的正则表达式:
(^(类型:)\b(布尔值|整数|加倍|字符串)\b,(\b注册表ID:\b)([1 - 9][0 - 9]*),(\b值:\b)(. *)$)
但是我遇到了一些问题,当浮点数或整型数为负时,连字符不能正确排序...
有人能给我指一下正确的方向吗?
https://regex101.com/r/WhXmBE/3
谢谢!
已尝试[\s\S],但它可以读取所有内容,也尝试了-?

eyh26e7m

eyh26e7m1#

以你为例,这似乎行得通:

(^(type:)(bool|int|double|string),(register_id:)([1-9][0-9]*),(value:)(.*)$)

至少从这个例子中,我不明白为什么\B是必要的。如果我错过了什么,请道歉。
考虑到您要实现的目标,我实际上会考虑放弃正则表达式,因为正则表达式本身会增加复杂性。如果您这样做,您的生活可能会更轻松:
1.用“”分割行,以获取键值对
1.按第一个“:“拆分每个键值对,以拆分键和值
1.验证所有键是否存在,以及每个值是否与键的格式匹配(例如,如果类型为bool,则值应解析为bool)
您可以轻松地调整每一步,例如修剪空格。
编辑:修复了排印错误

相关问题