如何在ruby中使用正则表达式引用引号之间的文本

时间:2014-10-10 06:56:11

标签: ruby regex

我有以下字符串,我想在单引号之间提取文本。

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

我遇到的问题是转义单引号(可能会多次出现转义字符),所以匹配应为

marie d\'avignon
-
3

感谢帮助

2 个答案:

答案 0 :(得分:1)

你可以试试下面的正则表达式,

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

DEMO

(?:[^']*\\')+正则表达式确保引用字符串中必须存在转义引号。

答案 1 :(得分:0)

最简单的可能是:

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