我试图通过谷歌分析跟踪我的网站上的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)
这是通过使用()将匹配分成两组来完成的,它们是:
-
第一个使用[^/s]以破折号分隔的名称。]+获取任意数量的任意字符,而不是'','。',或空白,这基本上获得从'.pdf'到它前面的/的所有字符。
-
下一组匹配。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组来完成的,它们是:
-
第一个使用[^]以破折号分隔的名称。/0-9]*获取非'的任意数字。', '/'或数字,则使用[^-]。/0-9]以确保匹配不会以'-'结束。
可以有效匹配以-分隔的不包含数字的单词。 这个组使用-??为了匹配尽可能少的-(包括没有),然后在后面跟着[^/]*,它匹配任何不包含'^'或'/'的内容。
有效匹配以-分隔的包含数字的单词。使用。pdf来匹配。pdf。如果你想确保它在字符串的末尾,你可以使用。pdf$
然后将此匹配替换为自身+ ?pdf= +第一个匹配组