是否可以使用 .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);
从概念上讲,整数和字符之间没有区别,但是如何实现呢?
升级版:
一种可能的解决方案是将整数转换为 unicode 字符。但是如何排除正则表达式特殊字符或对其进行编码?
如果我们谈论shorts,对先前答案的修改似乎可以正常工作:
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
.
已编辑
无法直接将 int 数组与 Regex 匹配。
根据文档 MSDN Match 方法将参数作为字符串。
您必须先将 int 数组转换为字符串。您可以通过以下方式将 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();