簡體   English   中英

用正則表達式刪除除中文字符之外的所有字符?

[英]Remove all except the chinese characters with regex?

我有一個字符串是一個句子,用中文寫的。

這包含中文字符和其他填充物,如空格、逗號、感嘆號等,均以 UTF8 編碼。

使用帶有 latin1 字符串的正則表達式,我可以使用preg_replace[a-zA-Z]來清潔它並去除填充物。

如何在刪除所有填充項的同時僅保留中文字符串中的中文“字母”字符?

根據this document ,這里是漢字的unicode范圍:

表 12-2。 包含漢字的塊

Block                                Range         Comment
CJK Unified Ideographs               4E00–9FFF     Common
CJK Unified Ideographs Extension A   3400–4DBF     Rare
CJK Unified Ideographs Extension B   20000–2A6DF   Rare, historic
CJK Unified Ideographs Extension C   2A700–2B73F   Rare, historic
CJK Unified Ideographs Extension D   2B740–2B81F   Uncommon, some in current use
CJK Compatibility Ideographs         F900–FAFF     Duplicates, unifiable variants, corporate
characters
CJK Compatibility Ideographs Supplement 2F800–2FA1F Unifiable variants

你可以這樣使用它:

preg_replace('/[^\u4E00-\u9FFF]+/u', '', $string);

要么

preg_replace('/\P{Han}+/u', '', $string);

其中\\P\\p的否定

在這里查看所有unicode scripts

希望對你有用。

str1 = Regex.Replace(str1, @"[\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD]", "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM