在字符串中查找数字的regexp
本文关键字:regexp 数字 查找 字符串 | 更新日期: 2023-09-27 18:29:26
我有以下字符串来自:
session=11;reserID=1000001
如何获取数字的字符串数组?
我的代码:
var value = "session=11;reserID=1000001";
var numbers = Regex.Split(value, @"^'d+");
您可能在正确的轨道上,但忘记了字符类:
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).*?");