-1

HTML ページを解析していくつかのリンクを置き換える必要があります。これはリンクの形式です<a href="/{localLink:1144}" title="Bas-rhin">Mauris nec</a>。問題は、正規表現が適切に終了しないことです。「.

これは私の正規表現です:

Regex r= new Regex("<a href=\"(/{localLink:)(.*)}\" title=\"(.*)\">(.*)</a>");

その正規表現は各リンクの後に終了せず、3 番目のグループには title プロパティは含まれていませんが、私の html の最後までほとんどすべての html が含まれています。

私はこのサイトでそれをテストしました:

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

ここに画像の説明を入力

では、なぜ 3 番目のグループは の直後で終わらないのBas-Rhin"でしょうか?

4

3 に答える 3

1

あなたが尋ねた質問 (「では、なぜ 3 番目のグループは の直後に終わらないのBas-Rhin"ですか?」)に対する答え.*は、欲張りです。つまり、可能な限り消費します。.*?できるだけ少なく消費するように置き換えます。

この道をたどり続ける場合におそらく抱くであろう多くの疑問に対する答えは、HTML は通常の言語ではないため、正規表現は HTML を正しく解析できないということです。ネストされた一致するトークン (matched with または matching with など)<tag></tag>持ち、ネストの深さに制限がない言語 (HTML、C ファミリー言語、JSON、およびその他の多くの言語の場合) を使用している場合、正規表現は単純に機能しません。解析または検証します。{}

于 2013-08-12T15:55:04.740 に答える
0

あなたのテストケースは問題ないようです:

ここを参照してください http://collapsar.ohost.de/pics/derek.png

于 2013-08-12T16:20:33.080 に答える