2016-10-20 5 views
1

私はGoogleアナリティクスを通じて自分のサイトでPDFを追跡しようとしています。 Dreamweaverで検索と置換を使用すると、すべてのPDF URLを検索し、最後にPDFのファイル名を追加する正規表現を取得する必要があります。だから、私は私はまだ洗練されたこのレベルに達していないlearnign REGEXいますので、任意の提案のために感謝されるもののRegex - URLの一部を検索してPDFを追跡するのに役立ちます

http://mysite/strategy/annual-plan-16-17.pdf

は、残念ながら

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

になります。本当にありがとうございました。

+0

に取り込むだけで内容を挿入://のstackoverflowを。 com/a/2759417/3832970)。 –

+0

もちろん、それは素晴らしい提案であり、私はしばらくそれをやっています。現在私は物事を見つけることができますが、残念なことにこのレベルの洗練はありません。 – user3517217

+0

'http://mysite/strategy/annual-plan.pdf?pdf = annual-plan'としたいですか?http://mysite/strategy/annual-plan-16-17.pdf?pdf =年次計画-16-17? –

答えて

0

これは、 ' - 'で区切られた名前と、数字と数字の両方が ' - 'で区切られていて、どれも誘導しない場合にうまく機能します。これは、URLの末尾に?pdf =という文字とnumberPartsの部分を戻します。

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

これは、()で2つの群にマッチングを分割することによって行われ、これらは次のとおり

  1. 最初のものは[^/\ Sを使用してダッシュで区切られた名前を取ります。 ] + '\'、 '。'、または空白でない任意の数の文字を取得するには、基本的に '.pdf'のすべての文字を/の前に置きます。

  2. この次のグループは、.pdf(明らかに)を使用して.pdfと一致します。 この一致は、マッチ全体+ pdf = +最初のグループに置き換えられます。

XXXXX-XXXXX-1111.pdfは、あなたがこれを使用することができ、?PDF = XXXXX-XXXXXを.PDFする御所ので、あなたは手紙の一部jsutたい場合。

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. このグループでは - ??可能な限り一致するように(noneを含む)、[^ /] *は '^'や '/'を持たないものと一致します。これは、数字を含む - で区切られた単語と効果的にマッチします。

  3. は.pdfと一致するように.pdfを使用します。あなたが確保したい場合、それはあなたが自分自身+?PDF = +最初に一致した基で置換されて$

この試合.PDF使用できる文字列の最後にありました。

+0

あなたの返信をどのように明確にしているのかとても感謝しています。これは、私が本当にあなたのようにREGEXを握ることを期待して、将来私が使うことができる学習リソースになるので絶対に華麗です。私は本当にとても感謝しています。 – user3517217

+0

私は助けてくれてうれしいです。あなたがまだ正規表現のテスターを見ていないなら、私はこの1つhttps://regex101.com/が好きです。彼らは、正規表現をはるかに簡単に試して試してみることができます。 –

1

私はあなたが

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

を使用して$0?pdf=$1と置き換えることができると思います。

regex demoを参照してください。

詳細

  • https?:// - http://またはhttps://
  • \S* - 最後
  • /まで、できるだけ多くのゼロまたはそれ以上の非空白記号、 - スラッシュ
  • ([^/]+) - (グループ1)/
  • 以外の1つ以上の文字
  • \.pdf - aリテラル.pdf

あなただけ.pdf後はノー?と、それらのリンクをつかむために必要がある場合は、パターンの最後に(?!\?)否定先読みを追加します。置換パターンで

$0は([正規表現を学ぶ]のhttp全試合テキストと$1挿入あなたが見ているしたい場合があり、グループ1

+1

このような詳細な対応は非常に高く評価され、私の学習に本当に役立ちます。ありがとう、私が以前に述べたように、これらを試して、あなたに私の成功を知らせます。再度、感謝します。 – user3517217

関連する問題