2012-04-07 24 views
0

トン= vjVQa1PpcFMYuRsz10_H-1z41mWWe8d6ENEnBLE7gug正規表現一致

[^(T =)] \ S {42}が、ます。http:私はそれだけで元のページから、ここからの眺めソースと一致するように入手できますかどのように、すべての文字列にマッチされる?V = opQ9GzRe5qs //www.youtube.com/watch

おかげ

答えて

1

あなたがリンクしているページはstを含んでいないようですあなたが探しているリング?しかし、その後、あなたが...

/t=\S{42}/ 

を必要とするページの任意の場所でその文字列を一致させるために、私は文字クラス[...]や括弧のサブパターンの必要性を見ていませんか...?

EDIT#1

あなたはトークンという42文字を抽出しようとしている場合は、あなた ...

/t=(\S{42})/ 

EDIT#2を括弧のサブパターンが必要になります

トークンを抽出する例。すべての例で43文字のトークンが含まれているように見えるので、これを42文字から43文字に変更しました。

// This is just some example text from which we want to extract the token... 
$text = <<<EOD 
SomeText=jkasdhHASGjajAHSKAK?asdjladljasdllkasdjllasdasdl 
asdjasiSTARTHERE;t=vjVQa1PpcFMYuRsz10_H-1z41mWWe8d6ENEnBLE7gug%3DENDHEREasdasd 
SomeMoreText;t=ThisIsTooShort%3Dklaksj 
EOD; 

if (preg_match('/;t=([a-zA-Z0-9_-]{43})%3D/',$text,$matches)) { 
    // Match... vjVQa1PpcFMYuRsz10_H-1z41mWWe8d6ENEnBLE7gug 
    echo 'TOKEN: '.$matches[1]; 
} else { 
    // No match 
} 

非スペース文字ではなく、パターンをより制限的に変更しました。現在、任意の文字、数字、アンダースコアまたはハイフンです。今度は%3Dで終わらなければならず、 "t ="の前にセミコロン( ";")があります。

+0

トークンはページがロードされるたびに生成され、長さが42ですので、t = –

+0

の後にこの文字列を取得する必要があります。あなたの質問を明確にする必要があると思います。あなたの質問に書かれている)、おそらく 'preg_match()'を使っていますか?または、42文字のトークンを_extract_したいですか?そのページにはそのパターンが含まれていないので、一致させようとしているテキストを貼り付けることが考えられます。 – MrWhite

+0

それは誰かがページをロードするたびに生成されるトークンです。そのため、完全にマッチするペーストはできませんが、そのトークンを抽出したいと思います。トークンは次のパターンを持ちます。長さが42です、私は意味を作っていることを願っています。上記のテキストは、トークンが抽出された –

1

私は、PHPの正規表現エンジンを使用していないが、それはPOSIX標準と地球上のすべての他の正規表現エンジンに反しない限り、 [^(t=)]t=(、または)以外の任意の文字と一致します。だからあなたの正規表現はそれに続く42の空白以外の文字と一致します。実際には43文字がトークンに含まれているため、文字列と一致します。おそらくあなたが意味していたのは^t=\S{43}$だったのでしょうか、それとも何かをしているのでしょうか?

+0

私は正規表現を初めて使ったので、私はこのhttp://regexpal.com/を使ってここに述べられていますが、与えられた答えは一致していないようです。文字列t = vjVQa1 PpcFMYuRsz10_H-1z41mWWe8d6ENEnBLE7gug –

+0

これで、t =ですべての文字列を取得しているように見えるので、終了文字列を%3Dにする方法は? –

+0

'$'は最後に一致し、 '%3D 'のどれも特殊文字ではないので、'%3D $'は%3Dで終わる文字列と一致します。 – Kevin