【发布时间】:2014-07-10 00:49:18
【问题描述】:
我有一个字符串:
<https://gitlab.me.com/api/v3/projects/all?page=2&per_page=5>;
rel="next",
<https://gitlab.me.com/api/v3/projects/all?page=1&per_page=5>;
rel="first",
<https://gitlab.me.com/api/v3/projects/all?page=8&per_page=5>;
rel="last"
所以格式是
(<val>; rel="key")*
我想将其解析为具有以下格式的哈希:
next => https://gitlab.me.com/api/v3/projects/all?page=2&per_page=5
first => https://gitlab.me.com/api/v3/projects/all?page=1&per_page=5
last => https://gitlab.me.com/api/v3/projects/all?page=8&per_page=5
在 Java 中,我会使用正则表达式模式来提取每个键 => 值对并将它们放入映射中。模式类似于:
<([^>]++)>;\s*rel="([^"]++)"
这会给我第二个匹配组中的键和第一个匹配组中的值。同样的方法是实现这一目标的最佳方法是 Perl,还是我可以做一些更时髦的事情?
附:我使用 Perl 而不是 Java 的原因是服务器没有 Java。
【问题讨论】:
-
你所说的“snazzier”是什么意思? Perl 的正则表达式支持并不完全缺乏,在 Perl 中使用它们真的很常见。
-
@Mat 我知道 Perl 的正则表达式支持非常好。但我也知道 Perl 还有很多其他的字符串处理特性。我只是想知道是否有更内置的方法来处理双分隔列表到哈希。