我正在尝试编写一个ruby正则表达式,以便从长字符串中提取一些数据(HTML源代码)。
从下面的字符串我想保留四个数字(1,11,30,90)和第一个单引号字符串(blablabla)
AjouterRDV(1, 11, 30, 90, 'blablabla', '123' ... (it goes on) );
我的正则表达式目前适用于上面的示例,但是当字符串包含转义的撇号时失败,例如
AjouterRDV(1, 11, 30, 90, 'it\'s failing!', '123' ... (it goes on) );
这是我的正则表达式,有两个示例字符串(一个传递,另一个失败) - Rubular
答案 0 :(得分:3)
答案 1 :(得分:2)
你可以试试这个: -
/AjouterRDV\( (\d+), (\d+), (\d+), (\d+), '((?:(?<=\\)[']|[^'])*)', .* \);$/ix
'((?:(?<=\\)[']|[^'])*)'
匹配前面有'
的{{1}},或匹配\
以外的任何字符
答案 2 :(得分:1)
AjouterRDV\( (\d+), (\d+), (\d+), (\d+), '((?<=\\)[']|[^'])*', .* \);$
几乎可以工作,除了它没有正确捕获第5组。为此你需要:
AjouterRDV\( (\d+), (\d+), (\d+), (\d+), '((?:(?<=\\)[']|[^'])*)', .* \);$
将他的“外部”组转换为非捕获组,然后在单引号内捕获选择。