正則表達匹配中文句子
【第1句】: 正則表達式匹配中文,Python語句該怎么寫
你好:
下面是我總結(jié)的一些正則表示的用法:
請參考:
## 總結(jié)
## ^ 匹配字符串的開始。
## $ 匹配字符串的結(jié)尾。
## \b 匹配一個單詞的邊界。
## \d 匹配任意數(shù)字。
## \D 匹配任意非數(shù)字字符。
## 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 函數(shù)返回對
## 象的 groups() 函數(shù)獲取它的值。
##正則表達式中的點號通常意味著 “匹配任意單字符”
【第2句】: 正則表達式如何只匹配一個中文字符
漢字的表示和正則表達式引擎相關(guān),不同引擎的寫法不同,下面的寫法適用于java引擎,或者一切以unicode來表示字符的引擎。
【第1句】:基本規(guī)格——針對漢字的一般集合(cp936,約等于GBK,共計20000多漢字)
[\u3007\u4E00-\u9FCB\uE815-\uE864]
【第2句】:擴充規(guī)格——針對多一些的漢字(支持CJK ExtA,共計接近30000漢字)
[\u3007\u3400-\u4DB5\u4E00-\u9FCB\uE815-\uE864]
【第3句】:豪華規(guī)格——針對更多的漢字(支持CJK ExtB、C、。。,共計76000多漢字)
([\u3007\u3400-\u4DB5\u4E00-\u9FCB\uE815-\uE864]|[\uD840-\uD87F][\uDC00-\uDFFF])
如下關(guān)于漢字在unicode中的區(qū)間,亦可供參考
【第3句】: 正則表達式匹配指定中文字符串
public void ShowStructure()
{
//要匹配的字符串
string text = "早上好aaa您好bbb大家好ddd……";
//正則表達式
string pattern = @"[\u4e00-\u9fff]+";
Regex r = new Regex(pattern);
//使用正則表達式匹配字符串,僅返回一次匹配結(jié)果
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();
}
}