none
Regex.Match 韩文匹配 RRS feed

  • 问题

  • GetTitle(@" 데이값 '112'을(를) 데이터")

    private string GetTitle(string html)
            {
                string pattern =@"데이값'"+ @"(?<id>.*?)"+@"'을(를) 데이터" ;

                return Regex.Match(html, pattern).Groups["id"].Value.Trim();
            }

              中文 英文都可以,但好像用匹配韩文就不可以了。


    2012年6月21日 11:05

答案

  • 其实是unicode内的字符集都支持。

    中文:/[\u4e00-\u9fa5]/

    日文:/[\u0800-\u4e00]/

    韩文:/[\uac00-\ud7ff]/

    C# 正则表达式应用实例  如果要匹配 所有东亚语言 @"[\u4E00-\u9fa5]"

    匹配 Regex regWord = new Regex("[^\x00-\xff|\\d]",  
    是匹配英文字符和数字之外的任意字符,输入中日韩就不符合

    view source
    print
    ? Regex regWord = new Regex(  
                      "[\u4e00-\u9fa5\u0800-\u4e00\uac00-\ud7ff]",  
                      RegexOptions.IgnoreCase  
                      | RegexOptions.CultureInvariant  
                      | RegexOptions.IgnorePatternWhitespace  
                      | RegexOptions.Compiled  
                      );  
                int intWord = 0;     

    2012年6月23日 14:23
    版主
  • 正则中()当成普通字符是要转义的,改成这样:

    	private string GetTitle(string html)
    	{
    		string pattern = @"데이값 '(?<id>.*?)'을\(를\) 데이터";
    		return Regex.Match(html, pattern).Groups["id"].Value.Trim();
    	}
    输出:string r = GetTitle(@" 데이값 '112'을(를) 데이터");

    2012年6月27日 16:11
  • 这样也可以:

    	private string GetTitle(string html)
    	{
    		string pattern = @"데이값 '" + @"(?<id>.*?)" + Regex.Escape("'을(를) 데이터");
    		return Regex.Match(html, pattern).Groups["id"].Value.Trim();
    	}
    输出:string r = GetTitle(@" 데이값 '112'을(를) 데이터");

    2012年6月27日 16:19

全部回复

  • 其实是unicode内的字符集都支持。

    中文:/[\u4e00-\u9fa5]/

    日文:/[\u0800-\u4e00]/

    韩文:/[\uac00-\ud7ff]/

    C# 正则表达式应用实例  如果要匹配 所有东亚语言 @"[\u4E00-\u9fa5]"

    匹配 Regex regWord = new Regex("[^\x00-\xff|\\d]",  
    是匹配英文字符和数字之外的任意字符,输入中日韩就不符合

    view source
    print
    ? Regex regWord = new Regex(  
                      "[\u4e00-\u9fa5\u0800-\u4e00\uac00-\ud7ff]",  
                      RegexOptions.IgnoreCase  
                      | RegexOptions.CultureInvariant  
                      | RegexOptions.IgnorePatternWhitespace  
                      | RegexOptions.Compiled  
                      );  
                int intWord = 0;     

    2012年6月23日 14:23
    版主
  • 正则中()当成普通字符是要转义的,改成这样:

    	private string GetTitle(string html)
    	{
    		string pattern = @"데이값 '(?<id>.*?)'을\(를\) 데이터";
    		return Regex.Match(html, pattern).Groups["id"].Value.Trim();
    	}
    输出:string r = GetTitle(@" 데이값 '112'을(를) 데이터");

    2012年6月27日 16:11
  • 这样也可以:

    	private string GetTitle(string html)
    	{
    		string pattern = @"데이값 '" + @"(?<id>.*?)" + Regex.Escape("'을(를) 데이터");
    		return Regex.Match(html, pattern).Groups["id"].Value.Trim();
    	}
    输出:string r = GetTitle(@" 데이값 '112'을(를) 데이터");

    2012年6月27日 16:19