我正在使用 RegPattern 识别和捕获 CSS 文件中的 URL,并附加一个版本标识符。这种模式大部分时间都有效。然而,其中一个打包的 CSS 文件正在破坏它。
url\((\""|\')?(?<path>(.*))?(\""|\')?\)
当与这段 CSS 一起使用时:
.ui-widget-overlay { background: #252526 url(images/ui-bg_flat_0_252526_40x100.png) 50% 50% repeat-x; opacity: .50;filter:Alpha(Opacity=50); }
它捕获了这段文本:
url(images/ui-bg_flat_0_252526_40x100.png) 50% 50% repeat-x; opacity: .50;filter:Alpha(Opacity=50)
这在 C# 中用于调用 Replace 方法。
最佳答案
你的问题是贪婪正则表达式。由于您的 CSS 中有另一个括号,它使 .*
成为整个字符串。
使用这个:
url\((\""|\')?(?<path>([^\)]+))?(\""|\')?\)
我已经将 .*
替换为 [^\)]+
(你可以使用 [^\)]*
但我觉得 URL不能为空)=> 所以它会找到所有不是闭括号的字符。
关于c# - RegEx 模式越过目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506992/