1

是否可以使用 .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 字符。但是如何排除正则表达式特殊字符或对其进行编码?

4

2 回答 2

0

如果我们谈论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.

于 2012-05-27T10:26:55.723 回答
-1

已编辑

无法直接将 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();
于 2012-05-26T15:59:39.910 回答