2013-10-04 20 views
-3

我想找到一个正则表达式来完成下列操作。假设我有这种形式的字符串用简单的分隔符提取字数对的正则表达式

wordcount = "THE:12 IT:3 TO:3". 

这是一个单词及其频率。我需要一个正则表达式,例如可以找到THe,然后是:,然后是一个数字。

+2

你有什么尝试?您可以在http://rubular.com/上使用Ruby正则表达式 - 它可以帮助加速搜索 –

+0

也不是每个字符串操作都需要是正则表达式。 wordcount.split.map {| x | x.split(':')}也可以组织你的代码。 – hirolau

+0

字符串示例中没有任何'THe'。 – sawa

回答

5

如果你希望所有比赛使用的扫描方法:

mystring.scan(/\w+:\d+/) 

奖金,如果你打算做一个哈希:

Hash[mystring.scan(/(\w+):(\d+)/)] 
# or, if you prefer to not use regexp: 
Hash[x.split.map{|y| y.split(':')}] 
+0

这不会返回散列 – user1850254

+0

第二行确实会返回散列。 p哈希[mystring.scan(/(\ w +):((\ d +)/)]。class#=> Hash – hirolau

+0

哈希的长度为0 – user1850254

0

您可以如下操作:

s = "THE:12 IT:3 TO:3" 
p s.scan(/\w+:\d+/) 
# >> ["THE:12", "IT:3", "TO:3"]