提取以数字

时间:2015-07-10 02:23:35

标签: regex substring match

我想提取以数字开头的第一个子字符串,并通过正则表达式以数字结尾。

  • BLAH 1174 (RE:q) - >应提取1174
  • BLAH 1194 (RE:g)5454 - >应提取1194
  • TITI 1026 (RE:w)54454 - >应提取1026
  • TOTO 2009-21 - >应提取2009-21
  • TOTO 2009-21 - >应提取2009-21
  • TUTU 2008-15 2013-12 - >应提取2008-15

我可以匹配数字([0-9] +),但无论如何都无法找到处理完整请求。

提前感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您可以使用基于捕获组的正则表达式。

^\D*(\d\S*\d)

在C#中。

@"(?m)(?<=^\D*)\d\S*\d"

从组索引1中获取您想要的字符串。

只需停用全局修饰符g即可。所以它不会在同一行找到另一场比赛。

\d\S*\d

答案 1 :(得分:1)

我们要查找数字/\d/,然后查找尽可能多的字符/.*/,然后在结尾找到另一个数字/\d/

将这些全部组合在一起,你的正则表达式:/\d.*\d/

如果您只想匹配满足此条件的字词,请使用:\d\w*\d。该 \w*仅匹配两位数字之间的单词字符。

如果您也想要非单词字符,请使用/\d\S*\d/,这将为您提供以数字开头和结尾的任何非空格字符串。