【发布时间】:2018-08-17 22:50:51
【问题描述】:
我正在使用以下 sn-p 将十六进制数字与范围匹配,但它们都不匹配。后来我也转换成十进制,现在很明显正则表达式有问题。一些提示会很好。
string[] tests = {"F200", "F201", "F2FF","F100","FFFF"};
const string regexPattern = @"\b[\uF200-\uF2FF]\b";
Regex rx = new Regex(regexPattern,RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (string test in tests)
{
if(rx.IsMatch(test))
Console.WriteLine("{0} is within the range.",test);
else
Console.WriteLine("{0} is not within the range.",test);
}
foreach(string test in tests)
{
Console.WriteLine("The corresponding decimal value of " + test + " is: " + int.Parse(test, System.Globalization.NumberStyles.HexNumber));
}
我从regex pattern for a range and above 127 找到了提示,但它并没有解决问题
【问题讨论】:
-
将数字解析为
uint(stackoverflow.com/questions/2801509/…) 然后通过正常的数字范围检查来检查范围不是更有意义吗?这就像用锯子敲钉子一样。 -
这是一个正则表达式Unicode字符
\uF200,这个F200是一串字母和数字。 -
换一种说法,
"\uF200"是1个字符的字符串,F200是4个字符的字符串。甚至不接近同一件事。