c# - RegEx 模式越过目标

标签 c# regex

我正在使用 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/

相关文章:

regex - 如何使用sed在 `),(`中的逗号后插入换行符?

c - 标准C库的正则表达式匹配函数

c# - 与我托管的 Windows 服务的安装程序一起,是否可以在发生错误时设置恢复选项?

c# - 为什么现在 ASP.NET 母版页上的 Context.User 为空?

c# - 如何清除WPF中的导航历史记录

c# - 使用私有(private)类代替字段 - 性能/内存损失?

c# - 使用 Lambda 表达式从多条记录中获取最大值

java - 使 .replaceFirst() 在特定字符之后开始

regex - 在 r 中的正则表达式中粘贴带引号的变量

python - 如何在 Scrapy 中创建基于 href 的 LinkExtractor 规则