正则表达式匹配中文句子
【第1句】: 正则表达式匹配中文,Python语句该怎么写
你好:
下面是我总结的一些正则表示的用法:
请参考:
## 总结
## ^ 匹配字符串的开始。
## $ 匹配字符串的结尾。
## \b 匹配一个单词的边界。
## \d 匹配任意数字。
## \D 匹配任意非数字字符。
## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。
## x* 匹配0次或者多次 x 字符。
## x+ 匹配1次或者多次 x 字符。
## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。
## (a|b|c) 要么匹配 a,要么匹配 b,要么匹配 c。
## (x) 一般情况下表示一个记忆组 (remembered group)。你可以利用 re.search 函数返回对
## 象的 groups() 函数获取它的值。
##正则表达式中的点号通常意味着 “匹配任意单字符”
【第2句】: 正则表达式匹配指定中文字符串
public void ShowStructure()
{
//要匹配的字符串
string text = "早上好aaa您好bbb大家好ddd……";
//正则表达式
string pattern = @"[\u4e00-\u9fff]+";
Regex r = new Regex(pattern);
//使用正则表达式匹配字符串,仅返回一次匹配结果
Match m = r.Match(text);
while (m.Success)
{
//显示匹配开始处的索引值和匹配到的值
System.Console.WriteLine("Match=[" + m + "]");
CaptureCollection cc = m.Captures;
foreach (Capture c in cc)
{
Console.WriteLine("\tCapture=[" + c + "]");
}
for (int i = 0; i < m.Groups.Count; i++)
{
Group group = m.Groups[i];
System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group);
for (int j = 0; j < group.Captures.Count; j++)
{
Capture capture = group.Captures[j];
Console.WriteLine("\t\t\tCaptures[{0}]=[{1}]", j, capture);
}
}
//进行下一次匹配.
m = m.NextMatch();
}
}
【第3句】: 正则表达式如何只匹配一个中文字符
汉字的表示和正则表达式引擎相关,不同引擎的写法不同,下面的写法适用于java引擎,或者一切以unicode来表示字符的引擎。
【第1句】:基本规格——针对汉字的一般集合(cp936,约等于GBK,共计20000多汉字)
[\u3007\u4E00-\u9FCB\uE815-\uE864]
【第2句】:扩充规格——针对多一些的汉字(支持CJK ExtA,共计接近30000汉字)
[\u3007\u3400-\u4DB5\u4E00-\u9FCB\uE815-\uE864]
【第3句】:豪华规格——针对更多的汉字(支持CJK ExtB、C、。。,共计76000多汉字)
([\u3007\u3400-\u4DB5\u4E00-\u9FCB\uE815-\uE864]|[\uD840-\uD87F][\uDC00-\uDFFF])
如下关于汉字在unicode中的区间,亦可供参考