C# 建议使用所需的正则表达式模式
样本C# 建议使用所需的正则表达式模式,c#,regex,C#,Regex,样本 EL:123 가나123.456다라 123-ABC-456 123.456+678.890 AA03-BB1 $.AB12,00 我想从字符串中提取任意数字格式 数字可能为| 100000 | 20000.00 | 12.52 | 10800.082| 我的模式是 @"\d[\d|,|.]+" 但是。。它不适用于一位数字| 3 | 1 | 我也试过了 @"[\d|,|.]+" 它不应该抓住|,|只是 我应该如何处理我的正则表达式模式?A\d[\d |,|]+re
EL:123
가나123.456다라
123-ABC-456
123.456+678.890
AA03-BB1
$.AB12,00
我想从字符串中提取任意数字格式
数字可能为| 100000 | 20000.00 | 12.52 | 10800.082|
我的模式是
@"\d[\d|,|.]+"
但是。。它不适用于一位数字| 3 | 1 |
我也试过了
@"[\d|,|.]+"
它不应该抓住|,|只是
我应该如何处理我的正则表达式模式?A
\d[\d |,|]+
regex将找不到3
或1
,因为\d
需要1个数字,而+
带[\d |,.]+
的也至少需要一个字符。注意,这也与1 |
匹配,因为管道符号在字符类中被视为文字字符。要匹配0个或多个匹配项,请使用*
量词
要匹配所有这些数字,您可以使用
\d[\d,.]*
或者更好:
\d+(?:[,.]\d+)*
见
详细信息:
\d+
-一个或多个数字
(?:[,.]\d+*
-零或更多(由于*
量词)出现:
[,.]
-逗号或点
\d+
-一个或多个数字
将+
替换为*
并移除|
。您可以尝试\d[\d,.]*
。或者\d+(?:[,.]\d+*
这总是让我感到困惑:d而不是[\d;,。]使用(\d;,)。使用\d+加号表示“至少一个或多个”你们真是太好了!我修好了它,它成功了。还有比MSDN页面更好的学习正则表达式的资源吗?谢谢!有没有比MSDN页面更好的资源来学习正则表达式呢?我可以建议大家在、通读(还有许多其他链接到伟大的在线资源)和所谓的社区中学习正则表达式。还有,值得一看。对于测试.NET正则表达式模式,我可以推荐。