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



我正在尝试用C#构建一个小单位转换,我正在解决一个问题。我在互联网上查看了一些示例,但我未能申请

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

我想string numstring unit

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

仅当输入具有int时,这才会给我结果12m而不是12.m12.4m...

我可以变通办法在输入文本中包含.,但现在输入必须具有.,小数部分也会发生。

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

尽管我可以做多种可能的情况来处理不同的输入格式,但代码看起来很糟糕。任何帮助,不胜感激。

您可以使用

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

查看正则表达式演示

  • (- 捕获组 1 的开始:
    • d*.?d+- 0+ 位数字,可选.、1+ 位数字
    • |- 或
    • d+.?d*- 1+ 位数字,可选.位,0+ 位数字
  • )- 捕获组 1 结束
  • s*- 0+ 空格
  • ([a-z]+)- 捕获组 2:一个或多个小写字母。