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

时间:2019-03-02 18:46:51

标签: c# regex

我正在尝试在C#中建立一个小的单位转换,并且我正在解决一个问题。我浏览了互联网上的一些示例,但未能申请

public TestSelectModel()
{
    _searchoptions = new List<SelectListItem>();
    _searchoptions.Add(new SelectListItem() { Text = "By Email", Value = "1", Selected = true });
    _searchoptions.Add(new SelectListItem() { Text = "By Request Name", Value = "2", Selected = false });
}
public void OnGet()
{
    if(BoundSearchField is null)
    {
        BoundSearchField = "1";
    }
    SearchOptions = new SelectList(_searchoptions, "Value", "Text", BoundSearchField);
}

我想Example text input: 12m 12 m 12.4m .5m 12.m string num

string unit

仅当输入具有new Regex(@"([\d.])([a-zA-Z- -/]+)"); 之类的int而不是12m12.m时,这才给我结果

我可以解决在输入文本中包含12.4m...的问题,但是现在输入中必须包含.,小数部分也是如此。

.

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

1 个答案:

答案 0 :(得分: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组:一个或多个小写字母。