2016-05-04 8 views
0

を見つけるのを助ける必要があります。CUSD横にこれは文字列です正しい正規表現形式

+CUSD: 1,"Your current Bank Account balance is Tk 17,370.37. Your available Bank Account balance is Tk 17,370.37.",15 

数:、口座残高の金額、および最後の数字、この場合には15がすべて異なります。

以下のRegex形式は正しいですか?

Match match = new Regex("\\+CUSD: (\\d+),\"Your current Bank Account balance is Tk (.+) Your available Bank Account balance is Tk (.+)\",(.+)\\r\\n").Match(input); 
while (match.Success) 
{do something;} 
+0

はい。しかし最後の削除\\ r \\ n –

+0

返事をありがとう、(?+)が何を意味するか分かりますか? @VadimMartynov – Adib

+0

'(。+)'は、任意の文字 '.'の1つ以上の' + 'と一致します。 –

答えて

1

あなたはここにregex demo

enter image description here

を参照してください

@"\+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)); 
} 
+0

残高に100,100,100.00などの2つのコマがある場合はどうなりますか? – Adib

+1

これは問題ではありません(http://regexstorm.net/tester?p=%5c%2bCUSD%3a+(%5cd%2b)%2c%22現在+銀行+口座+残高+ is + Tk +(あなたの+利用可能+銀行+勘定+残高+は+ Tk +(%5b%5cd。%2c%5d%2b)%5c。%5c%22%%5cd%2c。%5d%あなたの+利用可能な+銀行+勘定+残高+ 2 + 100%2c100%+ + 2% + Tk + 17%2c370.37%22%2c15)である。最初と最後の数字に '、'や '.'をつけることができるならば、' \ d + 'を口座残高の照合に使われた文字クラスのように置き換えてください。 –

+0

ありがとうたくさん、必要なすべての情報thats – Adib