2012-01-26 100 views

回答

0

你的意思是要提取號碼,安永的話:

var matches = Regex.Matches(input, @"\d\w*"); 

foreach (Match match in matches) { 
    var numWord = match.Value; // 3909B, etc. 
} 
+0

這不會匹配'B3909' –

+0

@約瑟夫:正確。 OP是否需要解釋;-) – Cameron

+0

非常感謝你的工作..是的,因爲我們必須在前面添加+ \ w。正確的正則表達式應該是@「\ w + \ d + \ w *」 – Dan

0

這是我能想到的最簡單的正則表達式,可以處理單詞有字母和數字的混合:

(\w*\d[\w\d]+) 

因此,這將符合您所需的單詞,再加上它會匹配'abc123xyz'。 Try it yourself.

+0

你可能想將'+'改成'*'或者你不會匹配一位數的數字; ) – Cameron

+1

其實,這很簡單:'\ w * \ d \ w *' –

+0

@Joseph:但是這並不是一回事。它只會匹配'14305'中的'1'。 – Cameron

1

基本表達應該是:

  1. | [^] +

    • OR -
    (< = ^)(= [^] * \ d?)
  2. (\ W * \ d [\ W \ d] +)

而在C#中使用它:

var matches = Regex.Matches(input, @"(\w*\d[\w\d]+)"); 

foreach (Match match in matches){ 
     var word = match.Value; 
} 

... 

var matches = Regex.Matches(input, @"(?<=^|)(?=[^ ]*\d)[^ ]+"); 

foreach (Match match in matches){ 
    var word = match.Value; 
} 
+0

這些表達式不等價。 – Cameron

相關問題