2015-02-09 82 views
0
模式之間

即時通訊目前使用以下非常簡單的正則表達式{{(。*?)}}到一個文件中找到車把.. 但是..由於某種原因,它使返回的結果,其中在{{}}包含.. 例如: 有些文字{{文字}}只有得到什麼在使用正則表達式

Woudl返回兩組 1. {{文字}} 2.文本

反正在C#使正則表達式只返回像2:nd組的結果?

BR, INX

回答

1

我建議你使用lookarounds。你有兩個結果主要是因爲捕獲組。在C#中,匹配的字符串存儲在組索引0內,並且捕獲被存儲在索引內,其相應的組號作爲索引號。

@"(?<=\{\{).*?(?=}})" 

由於上述正則表達式只做匹配操作,您會從組索引獲得所需的字符串0

2

Regex.Match回報Match對象,它具有Groups所以只是利用它。

按照慣例,組0是匹配

所以,只要做下面不改變你的正則表達式。使用向前看符號或屁股建議,因爲它會影響工作效率。爲什麼不參加第一組?

var match = Regex.Match(input, regex); 
if(match.Success) { // only if matching is successful 
    Console.WriteLine(match.Groups[1].Value); 
} 
0

串PTN = @ 「{((< = * =}?){。?)}」;
string value =「{{ayhan}},{{mehmet}},{deneme}」;
串[]結果= Regex.Matches(值,PTN).Cast()選擇(M => m.Value).ToArray();

輸出
艾漢
穆罕默德