正则表达式用于检索CSS url函数的参数

Kie*_*ron 3 css c# regex parsing

我正在尝试获取以下字符串的url部分:

url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)
Run Code Online (Sandbox Code Playgroud)

所以必要的部分如果images/ui-bg_highlight-soft_75_cccccc_1x100.png.

目前我有这个:

url\((?<url>.*)\)
Run Code Online (Sandbox Code Playgroud)

但是在下面的例子中似乎令人窒息:

url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30)
Run Code Online (Sandbox Code Playgroud)

结果导致images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30......

我想确保它支持尽可能多的变体(额外的空格等).

谢谢!
基隆

编辑

另外,我需要忽略可选引号'或'......

现在,它看起来像这样:

url\(['|"]?(?<url>[^)]+)\)
Run Code Online (Sandbox Code Playgroud)

我似乎无法让它停止/忽略最后的引用...

Pau*_*sey 6

这是由于*量词的贪婪,尝试一个否定的字符类而不是一个.

url\((?<url>[^)]*)\)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用惰性运算符

url\((?<url>.*?)\)
Run Code Online (Sandbox Code Playgroud)

第一选择可能更好.

编辑:要忽略第二个引用,您将需要使用这样的惰性量词

url\(['"]?(?<url>[^)]+?)['"]?\)
Run Code Online (Sandbox Code Playgroud)

您不在|字符类中使用交替元字符.