C# 简单正则表达式匹配
我有一根绳子C# 简单正则表达式匹配,c#,regex,C#,Regex,我有一根绳子 String test = @"Lists/Versions/2_.000"; 我对如何使用正则表达式来实现这一点有点困惑 我在用这个模式 String pattern = @"\D+"; 正则表达式的msdn页面显示\D为“匹配除十进制数字以外的任何字符” 那么,它不应该返回“列表/版本/”和“2”吗 然而它的回归 “2”,“000” 我希望字符串只匹配2(或任何整数)。我该怎么做 String url = @"Lists/Versions/2_.000";
String test = @"Lists/Versions/2_.000";
我对如何使用正则表达式来实现这一点有点困惑
我在用这个模式
String pattern = @"\D+";
正则表达式的msdn页面显示\D为“匹配除十进制数字以外的任何字符”
那么,它不应该返回“列表/版本/”和“2”吗
然而它的回归
“2”,“000”
我希望字符串只匹配2(或任何整数)。我该怎么做
String url = @"Lists/Versions/2_.000";
String pattern = @"\D+";
string[] substrings = Regex.Split(url, pattern);
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
您收到此问题的原因是
/D
用于捕获非数字,因此它检测到两个独立的数值(2
和000
),因为\ucode>。这就是它获取数据的方式。因此,您有两个选择:
- 将
字符串
分成可管理的部分,然后锚定到数组
- 建立一个更好的分离模式
所以问题是,你想解析什么<代码>2.00
?或者您正在尝试分隔字符串中的数字
我假设你也有打字错误:
- \d匹配一个数字字符。相当于[0-9]
- \D匹配非数字字符。相当于[^0-9]
- \w匹配任何单词字符,包括下划线。相当于
“[A-Za-z0-9_]”
- \W匹配任何非单词字符。相当于“[^A-Za-z0-9]”
您应该能够使用:
您只需执行以下操作:
string url = @"Lists/Versions/2_.000";
var data = Regex.Split(url, @"\D+");
Console.WriteLine(@"Value: {0} and Secondary Value: {1}", data[0], data[1]);
// using System.Linq;
String url = @"Lists/Versions/2_.000";
String pattern = @"(?<=/)\d+";
string[] substrings = Regex.Matches(url, pattern)
.Cast<Match>()
.Select(_ => _.Value)
.ToArray();
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
它将查找所有整数值,因此应提供以下输出:
2
000
它应该作为正常的字符串[]
返回。我的语法或表达式可能已关闭,但您可以找到一个很好的正则表达式备忘单。您还需要确保检查数组的边界。请尝试以下操作:
string url = @"Lists/Versions/2_.000";
var data = Regex.Split(url, @"\D+");
Console.WriteLine(@"Value: {0} and Secondary Value: {1}", data[0], data[1]);
// using System.Linq;
String url = @"Lists/Versions/2_.000";
String pattern = @"(?<=/)\d+";
string[] substrings = Regex.Matches(url, pattern)
.Cast<Match>()
.Select(_ => _.Value)
.ToArray();
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
//使用System.Linq;
字符串url=@“Lists/Versions/2_uuu.000”;
字符串模式=@“(?十进制数字基本上是0-9,不管前面是否有点…所以\D基本上是任何不是数字的东西…包括标点符号和字母它为什么会返回两个?你是如何使用正则表达式的?我得到列表/版本/
和。
请编辑你的问题,详细解释一下是什么您希望它与什么规则匹配。您正在对非数字使用拆分…因此您的正则表达式在“list/Versions/”和“\ux”上进行拆分。“并返回它们之前和之后的内容。\D+
将匹配每一块非数字的内容,并将这些内容视为要拆分的分隔符。结果是一个数组,包含所有不匹配的内容—数字和字符串的开头。