2011-01-25 9 views
0

私はタグの間のすべてを一致させたいと思います。このhtml要素は正規表現で一致していますか? (怠惰な一致なし!)

これを行う正規表現は何ですか?

ビット

<tr[^>]*>.*?</tr> 

よう

しかし、私は遅延評価を使用しないようにしたいと思います。

上記の正規表現のように各ペアをマッチさせたいが、レイジー評価を使用しない。

+0

そう、しないでください!あなたの質問は何ですか? – SilentGhost

+0

@SilentGhostあなたは何を理解していますか? – barlop

+0

どのような問題が遅延評価を使用していないのですか? – SilentGhost

答えて

2

怠惰にマッチするのではなく、ネガティブな先読みを使用することができます(味がそれをサポートしている場合)。あなたの例では、あなたの質問にコメントから推測している可能性があるとして、あなたは実際に、HTMLを解析するために正規表現を使用してはならない、もちろん

<tr[^>]*>((?!</tr>).)*</tr> 

に変換します。 =)これらの式は、ネストされたタグ、コメント、およびjavascriptでひどく失敗する可能性があります。

+0

これは本当にネガティブな先読みの優れた使い方です - 非常に感動的なものです... "((?!abc)。*)にインスピレーションを与えた特定の記事や書籍の一部がありますか?そして良い終わりのパラグラフも。 – barlop

+0

@barlop:ありがとう!私はregular-expression.infoがすべてのもの正規表現に行くためのソースだと思う。 – Jens

関連する問題