匹配HTML和Javascript文件中的文件路径

时间:2018-09-13 15:31:43

标签: c# regex

如果有人可以帮助我解决正则表达式问题

基本上我需要一个RegEx可以识别html,css,javascript中的文件 用单引号或双引号引起来

我已经(\"|')([^"|'|\s]|\\"*)*\..*(\"|')

我正在使用C#

查看链接 https://regex101.com/r/nga5yF/2

但是,如果您在底部查看我的测试,则在同一行上有多个匹配项,则测试将失败。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我们可以对此使用否定的字符类:

['"][^'" ]+?\.[^'" ]*?['"]

Online Demo

说明

  • 引号之间的所有内容,无论类型如何,是否存在.

答案 1 :(得分:1)

使用非贪婪或惰性*量词代替*?来匹配无限数量的重复,但以非贪婪方式进行。 (即最短的比赛)。

此外,在要求包含点之后,您忘记了在零件中排除空格和引号。

测试此版本的正则表达式:

(?<quote>\"|\')(?<file>[^\"\'\s]*?\.[^\"\'\s]*?)\k<quote>

https://regex101.com/r/wTXhaM/1

进一步的改进:

  • 使用命名的捕获组。
  • 根据字符串的开头,在模式末尾使用反向引用来匹配双引号或单引号。

或者如果您还想匹配单引号和双引号混合的文件名,请使用以下变体:

(?:\"|\')(?<file>[^\"\'\s]*?\.[^\"\'\s]*?)(?:\"|\')
  • 使用命名捕获组作为文件名。
  • 使用非捕获组作为报价

https://regex101.com/r/uM2Qfd/1