2

C#で使用しようとしています

 var added = Regex.Match(Text,
 "\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);

タグ[BEGINTAG]と[/ENDTAG]の間の文字列をテキスト文字列で返します。正規表現定数の何が問題になっているのかわかりません。

4

2 に答える 2

2

あなたの正規表現は良いです。グループ1(括弧の間に一致するもの)を抽出する必要があります

C#ではこれは次のようになります

Regex regexObj = new Regex(@"\[BEGINTAG\](.+?)\[/ENDTAG\]");
resultString = regexObj.Match(subjectString).Groups[1].Value;

これが機能するかどうか教えてください

また、参考までに、あなたはあなたがするほど逃げる必要はありません。これも良いです:

\[BEGINTAG](.+?)\[/ENDTAG]
于 2012-06-05T18:28:29.040 に答える
1

@考えられる問題の1つは、文字列の前にaがないため、C#は\文字を正規表現エスケープではなくC#エスケープとして処理していることです。

Buckleyの答えは、文字列の前に正規表現エスケープとして処理される@ようにする方法を示しています。\ほとんどの場合、C#の正規表現にはこの形式を使用することをお勧めします。そうでなければ、あなたはこのようなものになってしまいます。

var added = Regex.Match(Text, 
    "\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);

読みづらいと思います。

于 2012-06-05T18:36:41.937 に答える