2016-11-24 62 views
2

樣品建議對正則表達式模式需要

EL:123 
가나123.456다라 
123-ABC-456 
123.456+678.890 
AA03-BB1 
$.AB12,00 

我想提取字符串的數字格式。

數量可能是| 100,000 | 20,000.00 | 12.52 | 10,800.082 |

我的模式是

@"\d[\d|,|.]+" 

但是...它不只是一個數字工作| 3 | 1 |。

我也試過

@"[\d|,|.]+" 

它不應該趕上| ,| 。 |只要。

我應該怎樣處理我的正則表達式?

+0

用'*'替換'+'並刪除'|'。你可以嘗試'\ d [\ d,。] *'。或者'\ d +(?:[,。] \ d +)*' –

+0

這總是會讓我感到困惑:D而不是** [\ d |,|。] **使用**(\ d |,|。 )** –

+0

使用\ d +加號表示「至少有一個或多個」 – malutki5200

回答

2

一個\d[\d|,|.]+正則表達式不會找到31因爲\d需要1位,且該+[\d|,|.]+還需要至少一個字符以上。注意這也匹配1|,因爲管道符號被認爲是字符類中的文字字符。要匹配0個或多個匹配項,請使用*量詞。

匹配所有這些數字,您可使用

\d[\d,.]* 

或者,更好:

\d+(?:[,.]\d+)* 

regex demo

詳細

  • \d+ - 一個或多個數字
  • (?:[,.]\d+)* - 零個或多個(由於*量詞)的出現:
    • [,.] - 逗號或點
    • \d+ - 一個或多個數字
+0

謝謝!有沒有比MSDN頁面更好的學習正則表達式的資源? – ibocon

+0

我可以建議在[regexone.com](http://regexone.com/)上做所有的課程,閱讀[regular-expressions.info](http://www.regular-expressions.info),[regex SO標籤說明](http://stackoverflow.com/tags/regex/info)(與很多其他鏈接到偉大的在線資源),社區SO帖子稱爲[什麼是正則表達式意味着](http:// stackoverflow。COM /問題/ 22937618 /參考什麼 - 做 - 這正則表達式均值)。另外,[rexegg.com](http://rexegg.com)值得一看。爲了測試.NET正則表達式模式,我可以推薦[Ultrapico Expresso](http://www.ultrapico.com/expresso.htm)。 –

+1

太棒了!謝謝! – ibocon