Regex查找css引用

本文关键字:引用 css 查找 Regex | 更新日期: 2023-09-27 17:59:07

1. <link href="~/styles/test.css?v=15" rel="stylesheet" />
2. <link href="../styles/test.css?v=15" rel="stylesheet" />
3. <link href="~/styles/test.css" rel="stylesheet" />
4. <link href="../styles/test.css" rel="stylesheet" />
5. <link href="https://static.content.com/styles/test.css" rel="stylesheet" />
6. <link href="@Url.Content("~/styles/test.css")" rel="stylesheet" type="text/css" />
7. <link href="@Url.Content("../styles/test.css")" rel="stylesheet" type="text/css" />
8. <link href="@Url.Content("https://static.content.com/styles/test.css")" rel="stylesheet" type="text/css" />
9. <link type="text/css" rel="stylesheet" 
href='<%= Page.ResolveClientUrl("~/styles/test.css") %>' />
10. <link type="text/css" rel="stylesheet" 
href='<%= Page.ResolveClientUrl("../styles/test.css") %>' />

在以上所有情况下,我应该在像这样的倒置昏迷中获得值

~/styles/test.css?v=15
../styles/test.css?v=15
~/styles/test.css
../styles/test.css
https://static.content.com/styles/test.css

我可以买一个Regex吗?我只想把值放在倒置的逗号里,除此之外什么都不要,甚至倒置的逗号和css都不能从其他文件夹引用,比如内容,而不仅仅是样式。所以请不要提供Regex,它看起来像是硬编码。引用css可以有很多语法,我不应该为每种语法都更改Regex。

Regex查找css引用

EDIT:Krishna添加了一个新的上下文,他希望在其中匹配css,因此regex也相应地进行了扩展。

在大多数标准regex风格中,我会使用以下内容:

(?<=ResolveClientURL'(")[^"]+|(?:(?<=<link href=")(?!@Url'.Content)|(?<=<link href="@Url'.Content'("))(?:[^"])+

交替的左侧通过使用lookbackground处理您添加的最后一个case。

在交替的另一边,第一组括号包含具有两组查找的交替|,这两组查找分别用于我们的两种情况。

第一个断言:"在字符串的这个位置,字符串<link href="在我后面,而字符串@Url'.Content不在我前面

在OR(|(之后,第二个断言:"在字符串的这个位置,字符串<link href="@Url'.Content'("在我后面

在断言了其中任何一个之后,我们知道我们刚刚通过了开头的双引号。

(?:[^"])+吃掉任何不是双引号的字符,从而吃掉直到结束的" 为止的所有字符

使用这个:

"((?:https?|'.{2}|~).*?'/styles.*?)"

此处演示:http://regex101.com/r/iJ4oT7