我正在撰寫一個文本格式化程式,它需要從漢語拼音中清除特殊字符并將其替換為拉丁語對應物。但是我突然發現了這個問題所以,假設我有這個音節
shu
我需要檢查它是否包含以下串列中的一個字母:
üǖǘǚu??u??ǜ
我有一個像這樣的正則運算式
[üǖǘǚu??u??ǜ]{1}
它不應該匹配簡單的“u”,但它確實匹配。
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
這些字素中的大多數由多個代碼點組成,其中一個是字母“u”。Unicode 感知正則運算式引擎中的字符類是一類代碼點,而不是字素,因此該字符類將匹配其中包含的任何代碼點,包括字母“u”。
據我所知,沒有任何正則運算式引擎提供像“字形類”這樣的東西,所以你唯一的選擇是替代(即ü|ǖ|ǘ|...
)。
PS:{1}
是多余的。
uj5u.com熱心網友回復:
嘗試分別對每個字符使用非捕獲組:
(?:ü|ǖ|ǘ|ǚ|u??|u??|ǜ){1}
似乎作業。
uj5u.com熱心網友回復:
似乎您使用的一些特殊 u 字母包括 u 匹配。我找到了這個解決方法:
[üǖǘǚu??u??ǜ](?<!u)
使用與正常“u”字母不匹配的否定后視。
測驗鏈接:https ://regex101.com/r/U1N2Z9/1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/522306.html
標籤:正则表达式