请问在C#中如何使用正规表达式提取以下指定的中文?"锁定啊哦饿拉啦几哈达噶大否"我要提取的是:单一个几字....
请问代码怎么写...正规表达式怎么写?

解决方案 »

  1.   

    谢谢VARLJ的回答~
    不过我还是不明白~
    因为一段文本里面有超过三十几个"几"字....我想把其他所有的字都删除了..把三十几个"几"字都提取出来..显示在另外一个TEXTBOX中~~请问VARLJ大哥~C# 的代码和表达式该怎么写呢???非常感谢~
      

  2.   

    只遍历一次就可以搞定的,没必要用正则,还是直接判断效率比较高string yourStr = ...........;
    StringBuilder result = new StringBuilder();
    foreach (char c in yourStr)
    {
        if (c == '几')
            result.Append(c);
    }
    textBox1.Text = result.ToString();这种问题,正则只是在代码上简洁些罢了
    string yourStr = ...........;
    textBox1.Text = Regex.Replace(yourStr, @"[^几]", "");
      

  3.   

    顶楼上的……不是字符串就用正则不过还是写了个正则的……static void Main(string[] args)
    {
        string findStr = "几";
        string str = @"通几几几行证通行证密码获取其他页面数据: 
        很简单,这是得到列车时刻几的一段代 
        码,应为几这是得几几几到列车时刻表的一段代码, 
        应为几刚好可以几列车时刻表的一段代码,应为刚好 
        可以这是得到几列车时刻几几几几几表的一段代码,应为刚好可以 ";
        find(findStr, str);    Console.Read();
    }/// <summary>
    /// 查找想要的字符串
    /// </summary>
    /// <param name="findStr">可以是一个或几个字,没作特别处理,别用“.\”之类的</param>
    /// <param name="source">源字符串</param>
    public static void find(string findStr,string source)
    {
        Regex reg = new Regex("([" + findStr + "]+)");//如果只需要找一次,就把+去掉
        MatchCollection mc = reg.Matches(source);
        foreach (Match m in mc)
        {
            Group g = m.Groups[1];
            Console.WriteLine(string.Format("得到的字符串:{0}  位置:{1}   长度:{2}", g.Value, g.Index, g.Length));
        }
    }
      

  4.   

    非常感激LXCNN~~
    在下马上试试~非常感谢~
    请问如果我想实现如下情况该怎么写呢?例如:
    一般投诉 一般 2008071000070201 目录→业务查询→业务1
    我想把"一般"和"目录→业务查询→业务1"
    都去掉~只要2008071000070201~
    因为2008071000070201 是随时会改变的~但这些文字不会改变~请问该怎么写呢???十分感谢~~
      

  5.   

    既然不想要的是固定的,那就直接Replace掉就是了
    string test = "一般投诉一般2008071000070201 目录→业务查询→业务";
    string result = test.Replace("一般投诉一般", "");
    result = result.Replace(" 目录→业务查询→业务", "");
    textBox1.Text = result;
      

  6.   

    非常感谢varlj 和lxcnn 两位高手~
    我马上再试试~再请问一下LXCNN老大和LXCNN老大~
    如果文本里面我要REPLACE很多文字的话~包含空格和换行符的话~
    例如:紧急投诉紧急2008071000070201 目录→业务查询→业务啊
    十分投诉十分2008071000070201 目录→业务查询→业务啊2
    不投诉投诉不投诉2008071000070201 目录→业务查询→业务啊3这样的话~我想REPLACE这写字~只要中间的数字~应该怎么办呢? 我实在太菜了.....不好意思....
      

  7.   

    string test = "一般投诉一般2008071000070201 目录→业务查询→业务";
    string result = test.Replace("一般投诉一般", "");
    result = result.Replace(" 目录→业务查询→业务", "");
    textBox1.Text = result;如果要提取很都相同的"一般投诉一般"和(" 目录→业务查询→业务"的话~怎么做一个循环呢??就是把文本里面所有包含这写东西都REPLACE掉~谢谢~
      

  8.   


    这要看你要的结果是什么形式的了,字符串直接处理也可以,但这种需要我倒是喜欢用正则来处理了你要保留的数字,前面这一部分20080710可以看出来是日期,后面又是什么规律暂时是根据数字的长度取的
    string result = Regex.Replace(yourStr, @"^.*?(\d{14}).*$", "$1", RegexOptions.Multiline);
    richTextBox2.Text = result;
      

  9.   

    请问LXCNN~正规表达式能否输入中文??例如:@"紧急.*十分.*", "$1",之类的~ 
      

  10.   


    当然可以了,之前的正则里不就是有中文了吗
    Regex.Replace(yourStr, @"[^几]", "");
      

  11.   

    但是你要理解一下$1是有捕获组的情况下才能用的,如果是刚学正则的话,推荐你篇文章看下http://www.regexlab.com/zh/regref.htm
      

  12.   

    好的~在下马上看看~
    谢谢LXCNN不辞劳苦的回答我这个菜菜的问题~~
    真的非常感谢.谢谢~也非常感谢varlj~谢谢两位高手~
      

  13.   

    好的~在下马上看看~
    谢谢LXCNN不辞劳苦的回答我这个菜菜的问题~~
    真的非常感谢.谢谢~也非常感谢varlj~谢谢两位高手~
      

  14.   

    啊~~抓狂了~~
    配了好几次正规都配不出~~
    请问一下LXCNN大大~例如:通几几几行证通行证密码获取其他页面数据: 
        很简单,这是得到列车时刻几的一段代 
        码,应为几这是得几几几到列车时刻表的一段代码, 
        应为几刚好可以几列车时刻表的一段代码,应为刚好 
        可以这是得到几列车时刻几几几几几表的一段代码,应为刚好可以反回记录3条.我只要那个反回记录3条中间的数字,因为中间的3字是会改变的~请问正规应该怎么弄呢?
      

  15.   

    其实我最主要用的方式是~
    想问~
    怎么可以在文本里指定的文本与文本之间的一些会变动的数字提取出来~
    其他字都不要~
    请问LXCNN大大这种表达式已什么方式写呢????
      

  16.   

    (?<=前面的内容).*?(?=后面的内容)比如你这个
    str=Regex.Match(你的内容,@"(?<=反回记录).*?(?=条)",RegexOptions.Singleline);
      

  17.   

    谢谢HIMETALE大大~
    我马上试试~
      

  18.   

    请问歌丸大大~为什么这样提不出来呢??
                MatchCollection mc = Regex.Matches(input, @"(?<=反回记录).*?(?=条)", RegexOptions.IgnoreCase);
                foreach (Match m in mc)
                {
                    textBox2.Text  += m.Groups[0].Value + "\n ";
                }