正则表达式选择落后于最后一个字符

时间:2014-03-20 23:06:04

标签: regex

如何选择:

<link rel="shortcut icon" href="/Gfx/Global/FavIcon/favicon.ico" type="image/x-icon">

href关闭冒号后匹配的字符串:

<link rel="shortcut icon" href="/Gfx/Global/FavIcon/favicon.ico

我有以下表达式:

(link.*shortcut icon.*)(href)../(.*?)\"

但它选择:

<link rel="shortcut icon" href="/Gfx/Global/FavIcon/favicon.ico"

而不是:

<link rel="shortcut icon" href="/Gfx/Global/FavIcon/favicon.ico

1 个答案:

答案 0 :(得分:0)

如果你的输入html只是你在问题描述中显示的那一行,那么你的正则表达式将在这里传递。只需使用lookahead从最后省略\"

(link.*shortcut icon.*)(href)../(.*?)(?=\")

但是,如果你的html是巨大的,那么上面的正则表达式对你不起作用。试试这个:

(link[^>]*shortcut icon[^>]*)(href)../([^>\"]*)(?=\")

但仍然。对于少数特定的htmls,正则表达式可能无法证明安全。所以尝试一些html解析器或类似的库而不是正则表达式。