使用下面的正则表达式,我可以从CSS中提取路径,但结果还包括“#”和“?”之后的位。有什么办法可以提取路径吗

正则表达式

url\([\s]?[\"|\']?(.*?)[\"|\']?[\s]?\)




url('../fonts/Google_OpenSans/open-sans-v15-latin-italic.eot?#iefix') format('embedded-opentype')
url('../fonts/Google_OpenSans/open-sans-v15-latin-italic.woff2') format('woff2')
url('../fonts/Google_OpenSans/open-sans-v15-latin-italic.woff') format('woff')
url('../fonts/Google_OpenSans/open-sans-v15-latin-italic.ttf') format('truetype')
url('../fonts/Google_OpenSans/open-sans-v15-latin-italic.svg#OpenSans') format('svg')


预期

../fonts/Google_OpenSans/open-sans-v15-latin-italic.eot


实际

../fonts/Google_OpenSans/open-sans-v15-latin-italic.eot?#iefix

最佳答案

您可以使用

url\(\s*(["']?)([^()?#]*)(?:[#?].*?)?\1\s*\)


请参见regex demo。结果将在第2组中。

细节


url\(-url(子字符串
\s*-0+空格
(["']?)-组1:可选的'"
([^()?#]*)-组2:?#)(以外的任何0+个字符
(?:[#?].*?)?-一个可选的子字符串,以?#开头,然后具有除换行符以外的任何0+字符,并且尽可能少(要使其更加有效,请在此处将.*?替换为[^()]* ,请参见this demo
\1-与第1组中捕获的值相同
\s*-0+空格
\)-一个)字符。

关于php - 从CSS中仅提取路径,并在路径后排除任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53478189/

10-12 00:35
查看更多