TDタグを貪欲に解析しようとしています。次のようなものから始めています:
<TD>stuff<TD align="right">More stuff<TD align="right>Other stuff<TD>things<TD>more things
私は正規表現として以下を使用しています:
Regex.Split(tempS, @"\<TD[.\s]*?\>");
レコードは次のように返されます。
""
"stuff<TD align="right">More stuff<TD align="right>Other stuff"
"things"
"more things"
最初の完全な結果(「もの」で始まる結果)を分割しないのはなぜですか?パラメータの有無にかかわらず、TDタグのすべてのインスタンスで分割するように正規表現を調整するにはどうすればよいですか?
必要な正規表現は<TD[^>]*>
です:
< # Match opening tag
TD # Followed by TD
[^>]* # Followed by anything not a > (zero or more)
> # Closing tag
注:.
はすべて(空白を含む)に一致するため、[.\s]*?
は冗長で間違っています。[.]
はリテラル.
に一致するため、.*?
を使用してください。
欲張りでない一致の場合は、これを試してください<TD.*?>
*
Quantifier —ゼロ時間と無制限の時間の間で可能な限り一致し、必要に応じて返します(貪欲)*?
Quantifier —ゼロ時間と無制限時間の間で一致します可能な限り少ない回数、必要に応じて拡張します(遅延)