2010-12-14 8 views
3

まあ、ここで私は正規表現とそれの私の貧しい人々の理解に戻っています。それを学ぶ多くの時間を費やし、これは私が思い付いたものです:私は基本的にこの文字列に番号をしたい正規表現hrefは数字と一致します

/<a href=\"travis.php?theTaco=([0-9999999])\">(.*)</a> 

<a href="travis.php?theTaco=510973">510973</a> 

私の正規表現はほとんど良いのですか?私の元は:

"/<a href=\"travis.php?theTaco(.*)\">(.*)<\/a>/"; 

しかし、時々それは私に大きな文字列を返しました。だから、数字だけを取得したい。 他の投稿を通じて検索しましたが、関連性のない大量の資料があります。例、リソース、または関連性の高い質問にリンクしてください。

ありがとうございます。

答えて

4

使用している言語で提供されているHTMLパーサを使用してみてください。あなたの最初の正規表現が失敗した理由を

理由:

[0-9999999]はあなたが考えるものではありません。 1桁に一致する[0-9]と同じです。必要な番号に一致させるには、[0-9]+が必要です。また、.*は貪欲であり、可能な限り一致するように試みます。 .*?を使用して貪欲でないようにすることができます。番号を再度一致させるため、.*の代わりに[0-9]+を再度使用してください。また、キャプチャしている2つの番号が同じ場合は、最初の番号と一致させて、2番目の番号のバックリファレンス\1を使用します。

そして、.?のようにエスケープする必要があるいくつかの正規表現メタ文字があります。

試してみてください。

<a href=\"travis\.php\?theTaco=([0-9]+)\">\1<\/a> 
1

番号をキャプチャするには、[0〜99999]、あなたは数字で捉えるような範囲を使用しないでください。 [0-9] +のようなものは、あなたがそのセクションに対してもっと好きです。また、エスケープはcodaddictが言ったように重要です。

1

他にもあなたの正規表現に関するいくつかの問題がすでに述べられていますので、私はそれらを繰り返すことはありません。

あなたが望むものを指定した方法に関する問題もあります。

/theTaco=(\d+)/ 

で簡単に一致させて、最初のキャプチャグループを取得できます。これがあなたのニーズに合っているかどうかを知るための十分な情報を私たちに与えていない。

関連する問題