2015-07-10 114 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

相關問題