Ruby Regexp完全匹配字符串

时间:2015-03-26 01:48:59

标签: ruby regex

自:

14291@;@yfsun@;@some@string; .NET@;@200

要:

id=14291  name=yfsun  msg=some@string; .NET  code=200

我的正则表达式是:

/^(?<id>[^@]*)@;@(?<name>[^@]*)@;@(?<msg>[^@]*)@;@(?<code>[^@]*)$/

正如您所看到的,msg部分会出现问题,因为msg可能有@字符串。

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:2)

如果<code>是最后一个指定的群组,您只需将<msg>更改为greedy

(?<msg>.*)

Rubular

答案 1 :(得分:1)

我不明白为什么一个简单的正则表达式不会这样做。我忽略了什么吗?

str = "14291@;@yfsun@;@some@string; .NET@;@200"

id, name, msg, code = str.split(/@;@/)
id = id.to_i     #=> 14291 
name             #=> "yfsun" 
msg              #=> "some@string; .NET" 
code = code.to_i #=> 200