regex - 正则表达式:从字符串中提取键/值
问题描述
我有数百行具有以下格式
00008#A=1#B=3334#C=23/03A#D=BA FRCT TL4 3/4-5/6 US#AVC=DD 2
键以 开头#
,上面的行是:
A=1
B=3334
C=23/03A
D=BA FRCT TL4 3/4-5/6 US
AVC=DD 2
该行有许多不同/更多的键和值。
目标是提取键和值。
使用 ruby,没有正则表达式,我可以这样做:
line.split("#")[1..-1].inject({}) do |hash, kv|
k, v = kv.split('=')
hash[k] = v
hash
end
哪个输出:
{"A"=>"1", "B"=>"3334", "C"=>"23/03A", "D"=>"BA FRCT TL4 3/4-5/6 US", "AVC"=>"DD 2"}
但我想知道是否可以在正则表达式中做同样的事情,因为一行可以有几十个具有不同值长度的键/值。
我的出发点是:([AZ])\w+
解决方案
以下正则表达式将匹配一个#key=value
:
#([^=]+)=([^#]*)
使用返回所有匹配项的函数。每个匹配中的捕获组将分别是键和值。
推荐阅读
- c# - 确保旋转花费相同的时间,无论在 Unity 中旋转的角度如何
- c# - Task.Run 不执行所有的 httpwebrequest 方法
- python - 如何匹配字符串中的整个单词
- javascript - 基本的 React 应用程序一直挂在 Localhost 上
- python - 使用 chunksize 参数时如何获取 DataFrame 的索引?
- mips - 试图在 MIPS 中打印整数,以 ASCII 形式输出?
- reactjs - 如何在更改选项时不更改选择标签文本
- java - PipedOutputStream.write() InvocationTargetException
- javascript - 当字段大于/小于其他字段时如何使用 Mongoose 查找和更新
- java - DBCP2 借用超时