2014-10-10 68 views
0

我有以下字符串,我想提取單引號之間的文本。如何在紅寶石與正則表達式之間提取文本

javascriptfunction('marie d\'avignon','-','','3') 

對我來說,問題是逃單引號(有可能是轉義字符的多次出現),所以比賽應該是

marie d\'avignon 
- 
3 

幫助表示讚賞

+0

,所以你要打印的包含轉義單引號單引號內的字符串? – 2014-10-10 06:57:13

+0

對,逃脫的報價應該包含在提取的字符串中 – dc10 2014-10-10 07:04:58

+0

它是否包含多個轉義引號?請更新您的問題的更多細節.. – 2014-10-10 07:09:12

回答

1

你可以嘗試下面的正則表達式,

(?<=')(?:[^']*\\')+[^']*(?=') 

DEMO

(?:[^']*\\')+正則表達式確保在引用的字符串中必須存在一個轉義引號。

+0

不錯,但是其他兩個字符串的匹配情況如何?在上面的' - ','','3'的例子中?你剛剛匹配的正則表達式匹配第一組? – dc10 2014-10-10 09:04:20

+0

你說你只想要包含轉義引號的字符串。 – 2014-10-10 09:07:09

+0

對不起,我更新了這個問題。你的幫助表示讚賞 – dc10 2014-10-10 09:27:55

0

簡單的可能:

str = "javascriptfunction('marie d\\'avignon','-','','3')" 
#=> "javascriptfunction('marie d\\'avignon','-','','3')" 
str[/'.*?(?<!\\)'/] 
#=> "'marie d\\'avignon'" 
str.scan /'(.*?(?<!\\))'/ 
#=> [["marie d\\'avignon"], ["-"], [""], ["3"]]