首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:从字符串中提取键/值

Regex:从字符串中提取键/值
EN

Stack Overflow用户
提问于 2020-11-16 19:53:34
回答 1查看 81关注 0票数 0

我有数百行代码,格式如下

代码语言:javascript
复制
00008#A=1#B=3334#C=23/03A#D=BA FRCT TL4 3/4-5/6 US#AVC=DD 2

键以#开头,上面的行是:

代码语言:javascript
复制
A=1
B=3334
C=23/03A
D=BA FRCT TL4 3/4-5/6 US
AVC=DD 2

这一行有许多不同的/更多的键和值。

目标是提取键和值。

使用红宝石,不用regex,我可以:

代码语言:javascript
复制
line.split("#")[1..-1].inject({}) do |hash, kv|
  k, v = kv.split('=')
  hash[k] = v
  hash
end

其中产出:

代码语言:javascript
复制
{"A"=>"1", "B"=>"3334", "C"=>"23/03A", "D"=>"BA FRCT TL4 3/4-5/6 US", "AVC"=>"DD 2"}

但是我想知道在regex中是否可以这样做,因为一行可以有几十个键值/值,具有不同的值长度。

我的出发点是:(A)\w+

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-16 19:57:36

下面的regexp将匹配一个#key=value

代码语言:javascript
复制
#([^=]+)=([^#]*)

使用返回所有匹配项的函数。每个匹配中的捕获组分别是键和值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64864798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档