提取包含数字的单词的正则表达式

6

我需要提取包含数字的单词。

例如:

输入 - 3909B Witmer Road. Niagara Falls. NY 14305

输出 - 3909B 和 14305


6
请提出一个问题,而不是声明一个需求。 - jason
4个回答

14

1

基本表达式应为:

  1. (?<=^| )(?=[^ ]*\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; 
}

这些表达式并不等价。 - Cameron

0

你的意思是想提取数字相关的单词吗:

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

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

@Joseph:没错。但是,OP是否想要这个还有待商榷;-) - Cameron
非常感谢,它有效了。是的,为此我们需要在前面添加+\w。正确的正则表达式应该是@"\w+\d+\w*"。 - Dan

0

这是我能想到的最简单的正则表达式,可以处理既有字母又有数字的单词:

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

所以这将匹配您想要的单词,还会匹配 'abc123xyz'。 请自行尝试。


你可能想把那个 + 改成 *,否则你将无法匹配单个数字 ;-) - Cameron
1
实际上,这更简单:\w*\d\w* - Joseph Silber
@Joseph:但是那样做并不能实现同样的功能。它只会从“14305”中匹配到“1”。 - Cameron
@Cameron - 真的吗?请检查我的答案中的链接! - Joseph Silber
@Joseph:糟糕!我忘记\w也匹配数字了 :-) - Cameron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接