2015-07-10 110 views
2

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

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

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

在此先感谢您的帮助

+0

你如何匹配数字? –

+0

你正在运行哪个lang? –

回答

3

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

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

在C#。

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

而得到的字符串,你从组索引要1

OR

只需禁用全局修改g。这样它就不会在同一行中找到另一个匹配。

\d\S*\d 
+0

谢谢。似乎我将不得不运行2正则表达式呢?没有办法只提取第一场比赛?最后一个例子不工作 – goul

+0

如果你在使用php,你可以使用这个,'^ \ D * \ K \ d \ S * \ d' –

+0

我使用C#其实 – goul

1

我们要寻找一个数字/\d/,然后寻找尽可能多的字符可能/.*/,然后在年底/\d/找到另一个数字。

把这些结合在一起,你的正则表达式:/\d.*\d/

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

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

+0

非常感谢。尽管在最后一个例子中,我想采取第一个数字链。无论如何要这样做? – goul

+0

我不明白问题 – Strikeskids

+0

在这一个:“TUTU 2008-15 2013-12”中,我只想提取“2008-15”,但它提取了“2008-15 2013-12” – goul

相关问题