【发布时间】:2012-01-06 16:16:16
【问题描述】:
我有一个字符串需要解析。满足以下要求:
- 它由 0 个或多个 key->value 对组成。
- 密钥始终为 2 个字母。
- 该值为一个或多个数字。
- 键和值之间不会有空格。
- 各个对之间可能有也可能没有空格。
我可能看到的示例字符串:
- AB1234 //一个key->value对(Key=AB, Value=1234)
- AB1234 BC2345 //两个key->value对,用空格隔开
- AB1234BC2345 //两个key->value对,不用空格分隔
- //空字符串,没有键->值对
- AB12345601BC1234CD1232PE2343 //很多key->value对,没有空格
- AB12345601 BC1234 CD1232 PE2343 //很多key->value对,有空格
我需要构建这个字符串的 Perl 哈希。如果我能保证它是一对,我会做这样的事情:
$string =~ /([A-Z][A-Z])([0-9]+)/
$key = $1
$value = $2
$hash{$key} = $value
对于多个字符串,我可能会做一些事情,在上述正则表达式的每次匹配之后,我获取原始字符串的子字符串(排除第一个匹配项),然后再次搜索。不过,我确信有一种更聪明的 perl-esque 方式来实现这一点。
希望我没有这么糟糕的数据源来处理-
乔纳森
【问题讨论】: