[英]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.