1

model => model.Password 内の部分文字列を置き換えようとしています@Html.DisplayNameFor(model => model.Password)

私が使用している正規表現テンプレートの手がかりはありますか?

試してみ\\(.+?\\) ました これは正しいですか?

ありがとうございました!

var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", RegexOptions.IgnoreCase);
if (match.Success)
{

}
4

2 に答える 2

2

パターンは次のようになります。

@"@Html\.DisplayNameFor\((.+?)\)"

すでに逐語的な文字列 ( @"") を使用していたので、二重のバックスラッシュを含めるべきではありませんでした。また、.をエスケープする必要があったため、グループ化括弧を のmodel => model.Password代わりに一致するように調整しました(model => model.Password)

また、置き換えようとしている場合は、最初にing するRegex.Replaceのではなく、直接使用することをお勧めします。Match

于 2012-10-13T02:36:41.723 に答える
1

問題は次のステートメントにあります。

var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", 
RegexOptions.IgnoreCase);

正規表現パターンの前に使用@して、すべての文字をエスケープしました。この場合、もう 1 つ使用してパターンを再度エスケープする必要はありません"\"。したがって、このコードは次のようになります。

var match = Regex.Match(view, @"@Html.DisplayNameFor(\(.+?\))",
RegexOptions.IgnoreCase);

または、 を削除して@、引き続き二重スラッシュを使用することもできます。

var match = Regex.Match(view, "@Html.DisplayNameFor(\\(.+?\\))",
RegexOptions.IgnoreCase);
于 2012-10-13T03:03:17.817 に答える