0

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

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

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

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

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

url(/fonts/lr-icons.eot)

有人可以建议吗?

4

1 回答 1

1

要匹配,请在您的停止条件中url(/fonts/lr-icons.eot)添加一个:。这将使它消耗一切,直到找到 a或现在, a 。?[^)][^)?])?

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

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

在此处查看在线演示。在该表达式中,如果有 a ?something,它将出现在第 4 组中。

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

于 2013-10-04T16:42:50.023 回答