2014-10-08 60 views
-1

大家好我是相當新的正則表達式的世界我想正則表達式匹配不起作用

"\bAsm_vidEmfUpdate_2 (0, ?unknown?)\b" 

與此字符串匹配"Asm_vidEmfUpdate_2 (0, ?unknown?)"這個表達式。

我試圖字符之前注入 '\' '(' ')', '?' 「」是這樣的

"\bAsm_vidEmfUpdate_2 \(0\, \?unknown\?\)\b" 但它不工作,要麼

但它會導致不匹配這裏是我的代碼

string regexStr = "\bAsm_vidEmfUpdate_2 \(0\, \?unknown\?\)\b"; 

Regex regex = new Regex(regexStr); 

string instr = "Asm_vidEmfUpdate_2 (0, ?unknown?)"; 
MatchCollection m = regex.Matches(instr); 
string str1 = m[0].Groups[0].Value; // ArgumentOutOfRangeException 
+0

問題不在於你的正則表達式.. – 2014-10-08 11:26:05

+0

@JonSkeet編輯:爲它是一個函數,文字之前注入「\」對不起「(」,「)」,「?」 ,'',' – 2014-10-08 11:26:24

+0

使用正則表達式來匹配文字字符串會增加不必要的開銷。 – nhahtdh 2014-10-08 11:26:37

回答

0

您使用Groups[1]但你沒有捕獲一個。將正則表達式更改爲下面的內容或使用整個比賽的Group[0]

string regexStr = "(Asm_vidEmfUpdate_2 \(0, \?unknown\?\))"; 
0

不,這是匹配正確,但是你只有一個組(整個字符串)。所以Groups[1]是無效的 - 如果你問Groups[0]它的罰款:

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string regexStr = @"Asm_vidEmfUpdate_2 \(0\, \?unknown\?\)"; 
     Regex regex = new Regex(regexStr); 

     string instr = "Asm_vidEmfUpdate_2 (0, ?unknown?)"; 
     MatchCollection m = regex.Matches(instr); 
     string str1 = m[0].Groups[0].Value; 
     Console.WriteLine(str1); 
    } 
} 

目前還不清楚你想要雖然達到的目標。你的正則表達式不允許有任何的靈活性,所以你有效只是要求string.Contains。如果你想捕捉串的不同部分,你可能想是這樣的:

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string regexStr = @"([A-Za-z_0-9]+) \((\d+), ([^\)]+)\)"; 
     Regex regex = new Regex(regexStr); 

     string instr = "Asm_vidEmfUpdate_2 (0, ?unknown?)"; 
     Match m = regex.Matches(instr)[0]; 
     foreach (Group group in m.Groups) 
     { 
      Console.WriteLine(group.Value); 
     } 
    } 
} 

輸出:

Asm_vidEmfUpdate_2 (0, ?unknown?) 
Asm_vidEmfUpdate_2 
0 
?unknown? 

(需要注意的是組0仍是整個字符串...)

+0

@AvinashRaj:不,我知道。我在不改變它的情況下使用OP的正則表達式,以表明這不是問題。 – 2014-10-08 11:31:00

+0

如果我用'\ b'來匹配整個單詞,它不匹配 – 2014-10-08 11:31:47

+0

@IbrahimAmer:該評論沒有提供足夠的信息。我們不知道你在哪裏使用'\ b',或者輸入是什麼。 – 2014-10-08 11:41:24

相關問題