我想用正则表达式去匹配Unicode,
创建了以下正则表达式:Regex reg = new Regex("\\u[0-9a-fA-F]{4}");但运行时提示“正在分析“\u[0-9a-fA-F]{4}”- 十六进制位数不足。”,正确的正则表达式应该怎么改?

解决方案 »

  1.   

    http://hi.baidu.com/156544632/blog/item/121b06df4a25a81748540328.html
      

  2.   

    我想知道Regex reg = new Regex("\\u[0-9a-fA-F]{4}");这段代码为什么是错的?错在哪了?为什么会有“十六进制位数不足”这样的提示?
      

  3.   

    @"\"和“\\”是一样的,二者没有区别,我现在想匹配“\u4E2D\u56FD”这样的文本,如果匹配?
      

  4.   


    在正则中转义“\”,如果不加@时,需要用“\\\\”来转义,加@时,用“\\”来转义
    string test = "\\u4E2D\\u56FD";
    //Regex reg = new Regex("\\\\u[0-9a-fA-F]{4}");
    Regex reg = new Regex(@"\\u[0-9a-fA-F]{4}");
    MatchCollection mc = reg.Matches(test);
    foreach(Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
    /*输出
    \u4E2D
    \u56FD
    */
      

  5.   

    他不是你这个意思,他是:
    string str="\u4E2D\u56FD";
    然后去匹配
    很显然,楼主根本不懂编码你以为str就是你字面上写的那样吗?str中只有两个字符,\u4E2D是一个字符(具体是哪一个懒得查)又如:
    string str="\u0041\u0042";
    这个完全等价于
    string str="ab";所以你的问题就变成了,怎么从"ab"里匹配:
    Regex reg = new Regex("\\u[0-9a-fA-F]{4}");
      

  6.   

    LZ是这个意思?
    Regex reg = new Regex("[\\u0000-\\uffff]");
      

  7.   

    using System;
    using System.Text.RegularExpressions;public class Program
    {
      static void Main()
      {
        Regex reg = new Regex("[\\u0000-\\uffff]");
        string str = "\u4E2D\u56FD";
        Console.WriteLine("原字符串: {0}\n正则匹配:", str);
        foreach (Match m in reg.Matches(str))
        {
          Console.WriteLine(m.Value);
        }
      }
    }
    /* 输出:
    原字符串: 中国
    正则匹配:


    */
      

  8.   

    // 实际上,这个正则可以匹配一切单个 Unicode 字符:
    Regex reg = new Regex("[\\u0000-\\uffff]");
    // 基本相当于:
    Regex reg = new Regex("(?s).");