あなたはここにregex demo
を参照してください
@"\+CUSD: (\d+),""Your current Bank Account balance is Tk ([\d,.]+)\. Your available Bank Account balance is Tk ([\d.,]+)\."",(\d+)"
を使用することができ、私は1に一致するいずれかの\d+
(1桁以上)として.+
または[\d.,]+
を(precising示唆+数字、ドットまたはピリオド)。 .+
を使用すると、改行以外の1文字以上と一致し、長い入力でパフォーマンスが低下する不必要なバックトラックが発生します。
はまた、あなたが持っていないような方法は、二重のリテラル(例えば\+
)、または\d
のような速記文字クラスを宣言と同じように扱われるべき特殊な正規表現文字をエスケープを使用して、@"..."
で生の文字列リテラルを使用します。ここで
はC# demoです:
var s = "+CUSD: 1,\"Your current Bank Account balance is Tk 17,370.37. Your available Bank Account balance is Tk 17,370.37.\",15";
var mtch = Regex.Match(s, @"\+CUSD: (\d+),""Your current Bank Account balance is Tk ([\d,.]+)\. Your available Bank Account balance is Tk ([\d.,]+)\."",(\d+)");
if (mtch.Success) {
Console.WriteLine(string.Format("CUSD: {0}", mtch.Groups[1].Value));
Console.WriteLine(string.Format("Bank Account balance: {0}", mtch.Groups[2].Value));
Console.WriteLine(string.Format("Your available Bank Account balance: {0}", mtch.Groups[3].Value));
Console.WriteLine(string.Format("Last number: {0}", mtch.Groups[4].Value));
}
はい。しかし最後の削除\\ r \\ n –
返事をありがとう、(?+)が何を意味するか分かりますか? @VadimMartynov – Adib
'(。+)'は、任意の文字 '.'の1つ以上の' + 'と一致します。 –