我正在编写一个用于从文件中获取url的正则表达式。
Regex UrlRegex = new Regex(@"url\(((..)?(\/[^)]+))\)");
此正则表达式从我的文件中获取以下值
url(/fonts/lr-icons.eot?#iefix)
但我必须忽略“?#iefix”值并需要如下所示的值
url(/fonts/lr-icons.eot)
任何人都可以建议吗?
答案 0 :(得分:1)
要匹配url(/fonts/lr-icons.eot)
,请在停止条件?
中添加[^)]
:[^)?]
。这将使其消耗所有内容,直到找到)
或现在为?
。
最后,你得到第4组中的?#iefix
值,使用表达式:
url\(((..)?(\/[^?]+)(\?[^)]+)?)\)
请参阅 online demo here 。在该表达式中,如果有?something
,它将出现在第4组中。
另外,请注意那些(..)?
与两个点不匹配。他们匹配两个任何字符。确保这是你想要的。相反,如果您希望它只匹配两个点,则应该转义它们:(\.\.)?
。