是否可以在.NET中使用正则表达式引擎匹配整数数组。 例如:匹配整数数组
var a = new short[] { 1, 2, 3, 4, 5, 6 };
var r = new NumericRegex("^/1/2.{2}(/5|/10)/6$");
var match = r.Match(a);
概念上有整数和字符之间没有什么区别,但如何实现它?
UPD:
一个可能的解决方案是将整数转换为Unicode字符。但如何排除正则表达式特殊字符或编码它们?
是否可以在.NET中使用正则表达式引擎匹配整数数组。 例如:匹配整数数组
var a = new short[] { 1, 2, 3, 4, 5, 6 };
var r = new NumericRegex("^/1/2.{2}(/5|/10)/6$");
var match = r.Match(a);
概念上有整数和字符之间没有什么区别,但如何实现它?
UPD:
一个可能的解决方案是将整数转换为Unicode字符。但如何排除正则表达式特殊字符或编码它们?
被修改
这是不可能直接匹配正则表达式int数组。
根据文档MSDN匹配方法需要paremeter为字符串。
你必须int数组首先转换为字符串。 您可以通过以下
var a = new[] { 1, 2, 3, 4, 5, 6 };
StringBuilder sb = new StringBuilder();
foreach (var i in a)
{
sb = sb.Append(i);
}
var result=sb.ToString();
我认为OP正试图找到一个可以帮助你的图书馆。 –
可能是OP试图找到一个库。不管怎样,谢谢。 –
你将如何解析结果字符串“123456”? “123”和“456”?或“12”,“34”和“56”? ;) –
int数组转换为字符串,如果我们谈论短裤,前面的回答的这种修改似乎就好了工作:
var a = new short[] { 1, 2, 3, 4, 5, 33, 32, 43, 34 };
StringBuilder sb = new StringBuilder();
foreach (char i in a) { sb = sb.Append(i); }
MessageBox.Show(Regex.Match(sb.ToString(), "\u0005\u0021\u0020\\u002B\u0022").Value);
注char i in a
,而不是var i in a
。
你到底想干什么? –
所以,你想获得新的数组,其值满足正则表达式? –
为什么不使用LINQ首先将int数组转换为字符串?然后应用你的正则表达式。或者你为什么不把你的int数组升级到List,然后调用.Where()? –