如何使用正则表达式解析引用的搜索字符串?

Gav*_*vin 0 ruby regex

鉴于搜索字符串"汽车'猫和狗'鱼'锤'",什么是捕获所有搜索条件的最佳正则表达式.它应该支持单引号和双引号.如果可能的话,Ruby友好的答案.

Jer*_*ten 8

使用String#scan:

irb> "cars 'cats and dogs' fish 'hammers'".scan /'.+?'|".+?"|[^ ]+/
  => ["cars", "'cats and dogs'", "fish", "'hammers'"]
Run Code Online (Sandbox Code Playgroud)

哦,并在结果中摆脱周围的引号:

irb> ["cars", "'cats and dogs'", "fish", "'hammers'"].map { |s| s.gsub /^['"]|['"]$/, '' }
  => ["cars", "cats and dogs", "fish", "hammers"]
Run Code Online (Sandbox Code Playgroud)

  • `s.scan(/'(.+?)'|"(.+?)"|([^] +)/).flatten.compact`将排除引号. (5认同)