Regex -找到url的一部分并替换以帮助跟踪pdf



我试图通过谷歌分析跟踪我的网站上的pdf。使用Dreamweaver中的查找和替换,我需要获得一个正则表达式来查找所有PDF url并将PDF的文件名添加到末尾。所以:

http://mysite/strategy/annual -计划- 16 - 17. - pdf

http://mysite/strategy/annual -计划- 16 - 17. - pdf?pdf = annual-plan-16-17

不幸的是,虽然我正在学习REGEX,但我还没有达到这个复杂的水平,所以我将感谢任何建议。非常感谢。

我想你可以用

https?://S*/([^/]+).pdf

并替换为$0?pdf=$1

参见regex演示。

:

  • https?:// - http://https://
  • S* -零个或多个非空白符号,直到最后一个
  • / -斜杠
  • ([^/]+) -(第1组)/以外的一个或多个字符
  • .pdf -一个文字.pdf

如果你只需要抓取那些在.pdf之后没有?的链接,在模式的末尾附加(?!?)负向前看。

在替换模式中,$0插入整个匹配文本,$1仅将捕获的内容插入到组1中。

这对于以'-'分隔的名称和以'-'分隔的任意数量的数字和字母都可以很好地工作,导致没有。它将返回给您字母和数字部分,并将?pdf=附加到URL的末尾。

var value = "http://mysite/strategy/annual-plan-16-17.pdf";
var matches = value.replace(/([^/s]+)(.pdf)/g, "$1$2?pdf=$1");
console.log(matches)

这是通过使用()将匹配分成两组来完成的,它们是:

  1. 第一个使用[^/s]以破折号分隔的名称。]+获取任意数量的任意字符,而不是'','。',或空白,这基本上获得从'.pdf'到它前面的/的所有字符。

  2. 下一组匹配。pdf使用。pdf(显然)然后将此匹配替换为整个匹配加上+ ?pdf= +第一组。

如果您希望只保留字母部分,那么xxxxx-xxxxx-1111.pdf转换为。pdf?Pdf =xxxxx-xxxxx,那么你可以使用这个。

var value = "http://mysite/strategy/annual-plan-16-17.pdf";
var matches = value.replace(/([^/0-9]*[^-/0-9])(-??[^/.]*)(.pdf)/g, "$1$2$3?pdf=$1");
console.log(matches)

这是通过使用()将匹配分成3组来完成的,它们是:

  1. 第一个使用[^]以破折号分隔的名称。/0-9]*获取非'的任意数字。', '/'或数字,则使用[^-]。/0-9]以确保匹配不会以'-'结束。

  2. 可以有效匹配以-分隔的不包含数字的单词。
  3. 这个组使用-??为了匹配尽可能少的-(包括没有),然后在后面跟着[^/]*,它匹配任何不包含'^'或'/'的内容。

  4. 有效匹配以-分隔的包含数字的单词。
  5. 使用。pdf来匹配。pdf。如果你想确保它在字符串的末尾,你可以使用。pdf$

然后将此匹配替换为自身+ ?pdf= +第一个匹配组

相关内容

  • 没有找到相关文章