GitHub喜欢搜索正则表达式

时间:2015-12-05 21:13:30

标签: ruby regex

我有以下字符串:

list1

我希望它匹配到:

匹配#1

type:crash status:new "status:in progress 2" type:bug email:example@example.com

匹配#2

type:crash 

匹配#3

status:new  

匹配#4

status:in progress 2

匹配#5

type:bug

以下是我的尝试:

email:example@example.com

不幸的是我无法匹配双引号和电子邮件部分,请您告诉我如何增强此正则表达式以匹配上述数据。

2 个答案:

答案 0 :(得分:2)

不要使用正则表达式。使用标准库中Shellwords的shellsplit。它专为这个问题而设计,涵盖了你需要花时间覆盖正则表达式的边缘情况。

require 'shellwords'

str = 'type:crash status:new "status:in progress 2" type:bug email:example@example.com'

p str.shellsplit
# => [ "type:crash",
#      "status:new",
#      "status:in progress 2",
#      "type:bug",
#      "email:example@example.com" ]

答案 1 :(得分:1)

不确定特定边缘情况,但此正则表达式应与示例中的所有内容匹配。我在Rubular上测试了它。

("[^"]+"|[^\s]+:[^\s]+)

基本上“引号中的任何内容”或“任何不是空白的字符串一次或多次后跟冒号然后后跟不是空格字符”

相关问题