如何使用正则表达式从C#中的字符串中提取数字(整数或双精度)和文本

问题描述 投票:2回答:1

我正在尝试在C#中构建一个小单元转换,我正在解决一个问题。我在互联网上查看了一些例子,但我没有申请

Example text input:
12m 
12 m
12.4m
.5m
12.m

我想要string numstring unit

new Regex(@"([\d.])([a-zA-Z- -/]+)");

如果输入有intlike 12m而不是12.m12.4m...,这只给我结果

我可以在输入文本中包含.,但现在输入必须有.,也会出现小数部分。

new Regex(@"([\d.][.][\d.])([a-zA-Z- -/]+)");

虽然我可以做多种可能的情况来处理不同的输入格式,但代码看起来很糟糕。任何帮助表示赞赏。

c# regex
1个回答
0
投票

你可以用

(\d*\.?\d+|\d+\.?\d*)\s*([a-z]+)

regex demo

细节

  • ( - 捕获组1的开始: \d*\.?\d+ - 0+位数,可选.,1 +位数 | - 或 \d+\.?\d* - 1+位数,可选.,0+位数
  • ) - 捕获第1组的结束
  • \s* - 0+空格
  • ([a-z]+) - 捕获第2组:一个或多个小写字母。
© www.soinside.com 2019 - 2024. All rights reserved.