2012-01-26 63 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

相关问题