0

t = vjVQa1PpcFMYuRsz10_H-1z41mWWe8d6ENEnBLE7gug

ここで、太字の領域は42文字のトークンです。

これまで私はこれを使用しています[^(t =)] \ S {42}ですが、すべての文字列と一致しています。ここのソースページからの文字列と一致させるにはどうすればよいですか。view-source:http:// www .youtube.com / watch?v = opQ9GzRe5qs

ありがとう

4

2 に答える 2

1

リンク先のページに、検索している文字列が含まれていないようです。しかし、その文字列をページのどこかに一致させるには、次のことが必要になります...

/t=\S{42}/

[...]キャラクタークラスや括弧で囲まれたサブパターンは必要ありません...?

編集#1

ただし、その42文字のトークンを抽出しようとしている場合は、括弧で囲まれたサブパターンが必要になります...

/t=(\S{42})/

編集#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 =」の前にセミコロン(「;」)があります。

于 2012-04-07T22:41:38.033 に答える
1

私はphpの正規表現エンジンを使用していませんが、それがposix標準および地球上の他のすべての正規表現エンジンに反しない限り、、、、、 またはを除くすべての[^(t=)]文字と一致します。したがって、正規表現はそれに続く42個の非空白文字と一致します。トークンには実際には43文字あるため、文字列と一致します。あなたがおそらく意味したのは、またはそれらの線に沿った何かでした、それはおそらくあなたがそれで何をしているかに依存します。t=()^t=\S{43}$

于 2012-04-07T22:46:18.337 に答える