2010-07-14 51 views
0

給出一個搜索字符串「汽車」貓和狗的'魚'錘子',什麼是捕獲所有搜索條件最好的正則表達式。它應該支持單引號和雙引號。如果可能,Ruby友好的答案。如何使用正則表達式解析引用的搜索字符串?

+0

怎麼樣築巢 - '汽車 「貓 '和' 狗」'? – Anurag 2010-07-14 02:59:44

+0

是的,這是另一個需要解決的問題。 – Gavin 2010-07-14 04:39:11

回答

8

使用String#scan

irb> "cars 'cats and dogs' fish 'hammers'".scan /'.+?'|".+?"|[^ ]+/ 
    => ["cars", "'cats and dogs'", "fish", "'hammers'"] 

哦,擺脫在結果周圍的報價:

irb> ["cars", "'cats and dogs'", "fish", "'hammers'"].map { |s| s.gsub /^['"]|['"]$/, '' } 
    => ["cars", "cats and dogs", "fish", "hammers"] 
+0

這有效,我可以使用它,但我想在沒有地圖的情況下完成這項工作。我有一個正則表達式幾乎可以做到這一點,但它會在引用的短語中捕獲額外的引用:/(「?)\ s * \ b(\ S [^ \ 1] *?)\ b \ s * \ 1/ – Gavin 2010-07-14 03:25:09

+5

' s.scan(/'(.+?)'|「(。+?)」|([^] +)/)。flatten.compact'將排除引號。 – 2010-07-14 03:42:36

+0

@Wayne,這不起作用。刪除所有的引號,包括那些圍繞搜索短語,如'狗和貓'。 – Gavin 2010-07-14 09:52:51

相關問題