Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Regexp精确匹配字符串_Ruby_Regex - Fatal编程技术网

Ruby Regexp精确匹配字符串

Ruby Regexp精确匹配字符串,ruby,regex,Ruby,Regex,发件人: 致: 我的正则表达式是: id=14291 name=yfsun msg=some@string; .NET code=200 正如您所看到的,msg部分将是一个问题,因为msg可能有@字符串 有什么想法吗?谢谢如果是最后命名的组,您只需将更改为 (?*) 我不明白为什么一个简单的正则表达式不行。我是不是忽略了什么 (?<msg>.*) 我不明白,请详细说明您想要或期望的是什么以及您需要什么。只需将msg命名组更改为贪婪即可(?*)@hwnd nice,这就是我

发件人:

致:

我的正则表达式是:

id=14291  name=yfsun  msg=some@string; .NET  code=200
正如您所看到的,
msg
部分将是一个问题,因为
msg
可能有
@
字符串


有什么想法吗?谢谢

如果
是最后命名的组,您只需将
更改为

(?*)

我不明白为什么一个简单的正则表达式不行。我是不是忽略了什么

(?<msg>.*)

我不明白,请详细说明您想要或期望的是什么以及您需要什么。只需将
msg
命名组更改为贪婪即可
(?*)
@hwnd nice,这就是我想要的,谢谢。简单来说,这会更有效(
+1
)我需要使用正则表达式来完成这项工作,因为这是应用程序的配置,只支持正则表达式,所以不能使用split函数…但是
split
的参数是正则表达式(尽管它可能是字符串)。您必须结合正则表达式使用某种方法(可能是
扫描
拆分
)。你不能单独使用正则表达式来做任何事情。实际上我使用的是fluentd。我可以在这里指给你看。如果您在此页面上搜索
regexp
,您可以找到
格式
选项,应该是regexp。我在fluentd的解析器中尝试了
/(?。+?)(?=@;@|$)/
。它被解析了,但我不知道它在后续步骤中是否有效。(只是在黑暗中捅了一刀。)
/^(?<id>[^@]*)@;@(?<name>[^@]*)@;@(?<msg>[^@]*)@;@(?<code>[^@]*)$/
(?<msg>.*)
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