我有以下結構的標簽(只有括號內的 ASCII 字符):[Root.GetSomething]相反,一些貢獻者最終提交了看起來類似于拉丁字符的西里爾字符的貢獻,例如[Rооt.GеtSоmеth?ng]. 我需要定位,然后用括號內匹配的 ASCII 字符替換這些不一致。
我試過了\[([Аа??ВСсЕеРТтОоКкХхМ] )\];(\[)([^\x00-\x7F] )(\]),以及范圍的一些變體,但這些搜索沒有看到任何匹配項。我似乎在正則運算式執行邏輯中遺漏了一些重要的東西。
uj5u.com熱心網友回復:
您可以使用正則運算式匹配[ 字母或. ]和條件替換模式之間的任何“有趣的”西里爾字符:
查找內容:(?:\G(?!\A)|\[)[a-zA-Z.]*\K(?:(А)|(а)|(?)|(?)|(В)|(С)|(с)|(Е)|(е)|(Р)|(Т)|(т)|(О)|(о)|(К)|(к)|(Х)|(х)|(М))(?=[[:alpha:].]*])
替換為:(?1A:?2a:?3I:?4i:?5B:?6C:?7c:?8E:?9e:?{10}P:?{11}T:?{12}t:?{13}O:?{14}o:?{15}K:?{16}k:?{17}X:?{18}x:?{19}M)
確保Match Case選項為 ON。查看帶有字串的
:

詳情:
(?:\G(?!\A)|\[)- 前一個成功匹配或[字符的結束[a-zA-Z.]*- 零個或多個.或 ASCII 字母\K- 匹配重置運算子,從整體匹配記憶體緩沖區中丟棄當前匹配的文本(?:(А)|(а)|(?)|(?)|(В)|(С)|(с)|(Е)|(е)|(Р)|(Т)|(т)|(О)|(о)|(К)|(к)|(Х)|(х)|(М))- 一個包含 19 個備選方案的非捕獲組,每個備選方案被放入一個單獨的捕獲組(?=[[:alpha:].]*])-積極向前看,需要零個或多個字母或.然后]立即字符到當前位置的右側。
的(?1A:?2a:?3I:?4i:?5B:?6C:?7c:?8E:?9e:?{10}P:?{11}T:?{12}t:?{13}O:?{14}o:?{15}K:?{16}k:?{17}X:?{18}x:?{19}M)替換模式替換А用A(\u0410)如果第1組相匹配,а(\u0430)與a如果組2匹配等
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/391014.html
