Дано:
str = 'foo:bar:"jim:jam":jar'
Вы можете сделать это:
a = str.scan( /([^":]+)|"([^"]+)"/ ).flatten.compact
p a
#=> ["foo", "bar", "jim:jam", "jar"]
Или вы можете сделать это:
a = []
str.scan( /([^":]+)|"([^"]+)"/ ){ a << ($1 || $2) }
p a
#=> ["foo", "bar", "jim:jam", "jar"]
Эти регулярные выражения говорят, чтобы найти либо
- Один или несколько символов, которые не являются кавычкой или двоеточием, или
- Кавычка, за которой следует однаили более символов, которые не являются кавычками, за которыми следует кавычка.