私は文字列を持っています -
xyz":abc,"lmn
abcを抽出したい。これの正規表現は何になりますか?
私はこれを試しています -
/xyz\":(.*?),\"lmn/
しかし、結果を取得していません。
C#では、使用できます
var regex = new Regex(@"(?<=xyz\"":).*?(?=,\""lmn)");
var value = regex.Match(@"xyz"":abc,""lmn").Value;
これは、エスケープ文字として扱われない@
ことを意味する c# verbatim 文字列プレフィックスを使用することに注意してください。シングルが文字列に含まれるように\
、ダブルを使用する必要があります。"
"
この正規表現は、結果から特定のグループを選択しなくても一致を取得できるように、プレフィックスとサフィックスの一致ルールを利用します。
または、グループマッチングを使用できます
var regex=new Regex(@"xyz\"":(.*?),\""lmn");
var value = regex.Match(@"xyz"":abc,""lmn").Groups[1].Value;
次のようにして、一致の存在を確認できます。
var match = regex.Match(@"xyz"":abc,""lmn");
var isMatch = match.Success;
次に、使用した正規表現に応じて、match.Value
またはのいずれかでフォローアップします。match.Groups[1].Value
編集
実際には"
、ac# 正規表現ではエスケープは必要ないため、代わりに次のいずれかを使用できます。
var regex = new Regex("(?<=xyz\":).*?(?=,\"lmn)");
var regex = new Regex("xyz\":(.*?),\"lmn");
これら 2 つは逐語的な文字列接頭辞を使用しないため、\"
は正規表現に変換され、または"
の正規表現を与えます。(?<=xyz":).*?(?=,"lmn)
xyz":(.*?),"lmn
さらに、部分文字列ではなく文字列全体の一致である場合は、次のいずれかが必要です。
var regex = new Regex("(?<=^xyz\":).*?(?=,\"lmn$)");
var regex = new Regex("^xyz\":(.*?),\"lmn$");