我正在尝试在有小写字母和大写字母的位置分割文本。
假设文字是:"Įvairių rūšiųSkinti kardeliai"
我想将其拆分为“ųS”,但是以下正则表达式“ [±-ž] [Ą-Ž]”给了我:"Įvairių r"
但是当我将母语字母和正则表达式更改为“ [a-z] [A-Z]”时"Ivairiu rusiuSkinti kardeliai"
我得到了预期的结果:"Ivairiu rusi"
最佳答案
[a-z]
的意思是“将字符从a匹配到z”,对吗?作为人类,我们倾向于认为b显然在a之后,c则在b之后...等等。因此a-z将覆盖所有小写字母。
但是,实际上发生的是a-z
匹配a
和z
之间的任何Unicode代码点,恰好所有的字母都是小写字母。
让我们看一下在±和ž之间的代码点。
ąĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž
[ą-ž]
将匹配以上任何字符!那不是你想要的,是吗?为了解决这个问题,您可以
键入所有小写字母并将其放在
[]
中。对大写字母也要这样做,或者;使用字符类,例如
\p{Lu}
表示大写,\p{Ll}
表示小写。