2016-04-27 80 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#也有特殊的含義,如果您不使用逐字字符串文字作爲此答案。如果使用普通字符串,則必須將斜線加倍,如下所示:「\\ +(。*)#」 –

相關問題