在字符串中查找数字的regexp

本文关键字:regexp 数字 查找 字符串 | 更新日期: 2023-09-27 18:29:26

我有以下字符串来自:

session=11;reserID=1000001

如何获取数字的字符串数组?

我的代码:

 var value = "session=11;reserID=1000001";
 var numbers =  Regex.Split(value, @"^'d+");

在字符串中查找数字的regexp

您可能在正确的轨道上,但忘记了字符类:

Regex.Split(value, @"[^'d]+");

您也可以使用等效的'D+将其写得更短。

但是,在返回数组的开头会得到一个空元素,因此在使用结果时要小心。遗憾的是,Regex.Splitt()没有删除空元素的选项(不过String.Split有)。解决这个问题的一个不太好的方法:

Regex.Replace(value, @"[^'d;]", "").Split(';');

基于分号实际上是要拆分的相关部分的假设。

快速PowerShell测试:

PS> 'session=11;reserID=1000001' -replace '[^'d;]+' -split ';'
11
1000001

另一种选择是跳过元素:

Regex.Split(...).Skip(1).ToArray();
Regex
 .Matches("session=11;reserID=1000001", @"'d+") //match all digit groupings
 .Cast<Match>() //promote IEnumerable to IEnumerable<Match> so we can use Linq
 .Select(m => m.Value) //for each Match, select its (string) Value
 .ToArray() //convert to array, as per question

.Net在不使用RegEx的情况下内置了功能。请尝试System.Web.HttpUtility.ParseQueryString,传递字符串。您需要引用System.Web程序集,但它不需要web上下文。

  var value = "session=11;reserID=1000001";
  NameValueCollection numbers = 
      System.Web.HttpUtility.ParseQueryString(value.Replace(";","&"));

我将重用另一个问题中的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        string sauce = htm.Text; //htm = textbox
        Regex myRegex = new Regex(@"[0-9]+(?:'.[0-9]*)?", RegexOptions.Compiled);
        foreach (Match iMatch in myRegex.Matches(sauce))
        {
            txt.AppendText(Environment.NewLine + iMatch.Value);//txt= textbox
        }
    }

如果你想玩regex,这里有一个很好的网站:http://gskinner.com/RegExr/他们还有一个桌面应用程序:http://gskinner.com/RegExr/desktop/-它使用土坯空气,所以先安装。

var numbers =  Regex.Split(value, @".*?(.'d+).*?");

或返回每个数字:

var numbers =  Regex.Split(value, @".*?('d).*?");