2016-04-27 7 views
0

私はregexに従っていますが失敗します。私は#.特別な記号間の正規表現

var regexTN = new Regex("#(.*)."); 
var tn = regexTN.Match(tranFileName); 
r.TransactionNumber = tn.Groups[1].ToString(); 

どれ手がかり間+#

var regexMN = new Regex("+(.*)#"); 
var mn = regexMN.Match(tranFileName); 
r.MachineNumber = mn.Groups[1].ToString(); 

そして、ここでの間のすべての文字を取得する必要があります。この正規表現で

+3

あなたは "+" をエスケープする必要があります ""彼らの正規表現の意味は – BugFinder

答えて

3

+および.は、正規表現内で特別な意味を持ちます。プラス文字またはドットを検索する場合は、\を先頭に追加する必要があります。

var regexMN = new Regex(@"\+(.*)#"); 

そして

var regexTN = new Regex(@"#(.*)\."); 
+1

です。グループ内の部分を '[^#] *'や '[^。] *'に変更することをお勧めします。これには、より良い成果を上げるという利点もあります。 – Joey

+1

@Joey答えとしてあなたの説明を追加してもらえますか? –

+2

人生をもっと楽しくするためには、この答えのように逐語的な文字列リテラルを使用しないのであれば、C#にも特別な意味があります。通常の文字列を使用する場合は、スラッシュを二重にする必要があります。 "\\ +(。*)#" –

関連する問題