【发布时间】:2015-02-26 18:12:51
【问题描述】:
我需要一个 Java 中的正则表达式来匹配拉丁字母和一些特殊字符。
我不想列出字符。
例子:
应匹配以下大小写:äöüçłąćżźńóę
不应匹配:€£
我尝试了几种模式和组,但几个小时后我没有想法
我们将不胜感激。
【问题讨论】:
我需要一个 Java 中的正则表达式来匹配拉丁字母和一些特殊字符。
我不想列出字符。
例子:
应匹配以下大小写:äöüçłąćżźńóę
不应匹配:€£
我尝试了几种模式和组,但几个小时后我没有想法
我们将不胜感激。
【问题讨论】:
\p{IsLatin} 字符类将执行此操作。
即System.out.println(someString.matches("\\p{IsLatin}+"));
它在Pattern class documentation 中命名。
用快速循环迭代所有可能的字符表明它匹配的完整字符集是:
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyz ª º À Á Â Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù À æ Û ü Ý Þ ß à Ê ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ě Ĝ ę Ě ē捷克ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű ų ų Ŵ ŵ ſŻ Ÿ Ÿ Ž Ź Ÿ � ȗȗşţţţţȝȝȟȟƞȡȣȥȥȧȧȧȩȩȫȭȭȯȯȯȯȱȳȴȵȶȶȷȷȸȸȹȼƚⱦȿȿȿɀɀɀⱦȿɀɀȿⱦɇɇ � ɻ ɼ ɽ ɾ � � � � � � � � � � ₕₕₖₗₘₙₚₛₜₜⅎⅰⅶⅷⅷⅸⅺⅼⅽⅾⅿⅰⅷⅷⅳⅴⅵⅶⅷⅸⅺⅻⅼⅽⅽⅾⅾⅿⅻⅼⅽⅽⅾⅾⅻⅻⅼⅽⅾⅾⅼⅼⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅽⅼⅽⅽ � � � ꞥ Ꞧ ꞧ Ꞩ ꞩ Ɦ ꟸ ꟹ ꟺ ꟻ ꟼ ꟽ ꟾ ꟿ ff fi ffi ffl ſt st A B C D E F G H I J K Y M \ O LP Q R S T aUV W d e f g hij k lmnopq r st ü vw x yz
如果太多,您可以将其与一些 named Unicode blocks 相交。
比如这个字符类:
[\p{IsLatin}&&[\p{InBasic_Latin}\p{InLatin_1_Supplement}\p{InLatin_Extended_A}\p{InLatin_Extended_B}]]
将匹配:
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyz ª º À Á Â Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù À æ Û ü Ý Þ ß à Ê ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ě Ĝ ę Ě ē捷克ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű ų ų Ŵ ŵ ſŻ Ÿ Ÿ Ž Ź Ÿ � ȗȗşţţţţȝȝȟȟƞȡȣȥȥȧȧȧȩȩȫȭȭȯȯȯȯȱȳȴȵȶȶȷȷȸȸȹȼƚⱦȿȿȿɀɀɀⱦȿɀɀȿⱦɇɇ ɉ Ɋ ɋ Ɍ ɍ Ɏ ɏ
【讨论】:
使用以下模式(\p{L} 匹配任何 unicode 字符):
[\p{L}]+
【讨论】: