通过正则表达式查找URL值

时间:2013-10-04 16:32:30

标签: regex

我正在编写一个用于从文件中获取url的正则表达式。

Regex UrlRegex = new Regex(@"url\(((..)?(\/[^)]+))\)");

此正则表达式从我的文件中获取以下值

url(/fonts/lr-icons.eot?#iefix)

但我必须忽略“?#iefix”值并需要如下所示的值

url(/fonts/lr-icons.eot)

任何人都可以建议吗?

1 个答案:

答案 0 :(得分:1)

要匹配url(/fonts/lr-icons.eot),请在停止条件?中添加[^)][^)?]。这将使其消耗所有内容,直到找到)或现在为?

最后,你得到第4组中的?#iefix值,使用表达式:

url\(((..)?(\/[^?]+)(\?[^)]+)?)\)

请参阅 online demo here 。在该表达式中,如果有?something,它将出现在第4组中。

另外,请注意那些(..)?与两个点不匹配。他们匹配两个任何字符。确保这是你想要的。相反,如果您希望它只匹配两个点,则应该转义它们:(\.\.)?