建议需要正则表达式模式

时间:2016-11-24 10:17:09

标签: c# regex

示例

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

我想从String中提取任何数字格式。

数字可能是| 100,000 | 20,000.00 | 12.52 | 10,800.082 |

我的模式是

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

但是......它不适用于一个数字| 3 | 1 |。

我也试过

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

它不应该抓住| ,| 。 |仅

我应该怎么做我的正则表达式模式?

1 个答案:

答案 0 :(得分:2)

\d[\d|,|.]+正则表达式找不到31,因为\d需要1位数,+ [\d|,|.]+也需要1|至少一个炭更多。请注意,这也匹配*,因为管道符号在字符类中被视为文字字符。要匹配0次或更多次出现,请使用 \d[\d,.]* 量词。

要匹配所有这些数字,您可以使用

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

或者,更好:

\d+

请参阅regex demo

<强>详情:

  • (?:[,.]\d+)* - 一个或多个数字
  • * - 零或更多(由于[,.]量词)出现的次数:
    • \d+ - 逗号或点
    • int pushswap(int *la) { int *lb; int cnt; cnt = 0; while(la[cnt]) cnt++; lb = malloc(sizeof(int)*cnt + 1) } - 一个或多个数字