我正在尝试通过Google分析在我的网站上跟踪PDF。在Dreamweaver中使用查找和替换我需要一个正则表达式来查找所有PDF URL并在最后添加PDF的文件名。所以:
http://mysite/strategy/annual-plan-16-17.pdf
变为
http://mysite/strategy/annual-plan-16-17.pdf?pdf=annual-plan-16-17
不幸的是,尽管我已经学习了REGEX,但我尚未达到这种复杂程度,所以对任何建议都会感激不尽。非常感谢。
答案 0 :(得分:1)
我认为你可以使用
https?://\S*/([^/]+)\.pdf
并替换为$0?pdf=$1
。
请参阅regex demo。
<强>详情:
https?://
- http://
或https://
\S*
- 零个或多个非空格符号,尽可能多到最后一个/
- 斜杠([^/]+)
- (第1组)除/
\.pdf
- 文字.pdf
。如果您只需要在?
之后抓取那些没有.pdf
的链接,请在模式的末尾添加(?!\?)
否定前瞻。
在替换模式中,$0
插入整个匹配文本,$1
仅插入捕获到组1中的内容。
答案 1 :(得分:0)
这适用于由&#39; - &#39;分隔的名称。以及由&#39; - &#39;分隔的任意数量的数字和字母,不会导致任何数字和字母。它将返回字母和numberParts部分,并在URL的末尾添加?pdf =。
var value = "http://mysite/strategy/annual-plan-16-17.pdf";
var matches = value.replace(/([^\/\s]+)(.pdf)/g, "$1$2?pdf=$1");
console.log(matches)
&#13;
这是通过将匹配分成两组()来完成的,它们是:
第一个使用[^ / \ s。] +获取用短划线分隔的名称,以获得任何数字,而不是&#39; \&#39;,&#39;。&# 39;或者是一个白色空间,这基本上可以得到&#39; .pdf&#39;中的所有字符。到/之前。
下一组使用.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)
&#13;
这是通过将匹配分成3组()来完成的,它们是:
第一个使用[^。/ 0-9] *将由破折号分隔的名称取得任何数字,而不是&#39;。&#39;,&#39; /& #39;或者数字,然后使用[^ - ./ 0-9]确保匹配不以&#39; - &#39;结尾。这有效地匹配由 - 不包含数字的单词。
这个小组使用 - ??为了尽可能少地匹配(包括没有),然后用[^ /] *来匹配任何没有&#39; ^&#39;或者&#39; /&#39;。这有效地匹配由 - 包含数字的单词。
使用.pdf来匹配.pdf。如果你想确保它在一个字符串的末尾,你可以使用.pdf $
然后将此匹配替换为自身+?pdf = +第一个匹配组。