簡體   English   中英

C# 正則表達式僅在字符串中找到一組數字時才匹配

[英]C# Regex match only if one group of numbers is found in string

我正在嘗試提出一個正則表達式來處理從字符串中捕獲數字的一般情況,其中該數字可能具有一個或多個預先/后固定的非數字字符。
該數字可以包含零個或一個小數點或逗號。
如果字符串包含多個由非數字分隔的連續數字“集合”,我希望正則表達式失敗(“集合”可能不是正確的術語)。

例如,以下輸入將成功匹配:
abc12.00xyz將匹配 12.00
0.1$將是有效的並且匹配 0.1
.01將有效並匹配 .01
123abc將是有效的並且匹配 123
abc123將是有效的並且匹配 123

這些輸入將無法匹配:
abc12.00xyz322將由於第二個“組”數字而失敗,在本例中為 322
12t2會因為有兩個單獨的“組”數字而失敗

我嘗試了很多排列,但沒有取得太大進展。 這是迄今為止我最接近的一次。 它正確匹配數字,從匹配中排除非數字,但它包括字符串中的所有“集合”數字。

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

任何建議,將不勝感激。

您可以使用捕獲組:

^[^0-9\r\n]*?([0-9]*\.?[0-9]+)[^0-9\r\n]*$
  • ^字符串開始
  • [^0-9\\r\\n]*可選匹配除數字或換行符以外的任何字符,盡可能少
  • ([0-9]*\\.?[0-9]+)捕獲組 1 ,匹配可選數字,可選逗號和 1+ 數字
  • [^0-9\\r\\n]*可選匹配除數字或換行符以外的任何字符
  • $字符串結尾

查看.NET regex 演示(單擊“表”選項卡以查看捕獲組值)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM