長い文字列を解析していますが、解析の一部に正規表現を使用したいです。
簡単にするために、「私の正規表現は <[a-z]*>
そして、最初に到達したときに実行したい <
.
public int FindEnd(string longStr, int index) {
// longStr[index] == "<"
var match = regex.Match(longStr, index);
if (!match.Success || match.Index != index) {
throw new Exception("Mismatch");
} else {
return index + match.Length;
}
}
文字列全体を調べないように正規表現を何らかの形で制約したいのですが、指定された開始点で文字列のみを探します-これは可能ですか?私は試した ^<[a-z]*>
しかし、それは機能しませんでした-何も受け入れません(ただし、 index
文字列の先頭を指します)。
注:私は ない しようとする 正規表現でHTMLを解析する.
回答:
回答№1は2私はあなたが "探していると思う G<[a-z]*>
回答№2の場合は0
それは残念ですRegex.Match(String、Int32)はインデックスを「^」として扱いません。
次のようなものでそれを把握するのはどうですか:
re = new Regex( "^。{" + index.ToString()+ "} <[a-z] *>");
...つまり、正規表現自体内で一致の開始のオフセットを制限します。
更新:ああ。気にしないで。 MSDNの「G」の説明は「以前の一致」に言及していますが、上記のとおり正確に機能します。