[英]Regex for retrieving the parameter of the CSS url function
我正在嘗試獲取以下字符串的url部分:
url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)
所以如果images/ui-bg_highlight-soft_75_cccccc_1x100.png
需要的部分。
目前我有這個:
url\((?<url>.*)\)
但是在下面的例子中似乎令人窒息:
url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30)
其結果是images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30
images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30
......
我想確保它支持盡可能多的變體(額外的空格等)。
謝謝!
基隆
另外,我需要忽略可選引號'或'......
現在,它看起來像這樣:
url\(['|"]?(?<url>[^)]+)\)
我似乎無法讓它停止/忽略最后的引用...
這是由於*量詞的貪婪,嘗試一個否定的字符類而不是一個。
url\((?<url>[^)]*)\)
或者您可以使用惰性運算符
url\((?<url>.*?)\)
第一選擇可能更好。
編輯:要忽略第二個引用,您將需要使用這樣的惰性量詞
url\(['"]?(?<url>[^)]+?)['"]?\)
您不使用交替元字符|
在一個角色類中。
用[^\\)]+
替換.*
這應該這樣做:
url\(['"]?(?<url>.*?)['"]?\)
但您可能希望允許可選的空格:
url\s*\(['"\s]*(?<url>.*?)['"\s]*\)
這也將匹配一些無效的字符串,但如果您的CSS有效,這應該不是問題。
更多的事情:那個|
在['|"]
它不作為OR運算符,它只是匹配文字|
。或者隱含在字符類中。
網址\\((。* \\。PNG)
url\\((.[^)]*)\\)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.