我需要Java中的正则表达式来匹配拉丁字母和一些特殊字符。
我不想列出这些字符。
例子:
应匹配以下大写和小写字母:äöü
ç
łąćżźńóę
不应匹配:€
£
我尝试了几种模式和小组,但几个小时后我就没了主意
任何帮助将不胜感激。
最佳答案
\p{IsLatin}
字符类将执行此操作。
即System.out.println(someString.matches("\\p{IsLatin}+"));
它在Pattern
class documentation中命名。
快速循环遍历所有可能的字符,表明它匹配的完整字符集为:
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyzºÀÇààååæÜ ñúúúāāāāāāāČČČČČČēęęęě İīīīīīīİńńńńőōōōōōōō œœœśśśœūŸŸŸŸŸŸŸžžžžžžžžž ƑƑƑƑƒƒƒƒƑƒƒƒƒƒƒƒƒƒƒƑƑƒƑƒ Ƹǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎ Ǫ ǬǰǫȍȖȖȖȖȖș șȕȕȕȕȕȕ ȞȢȝȿɈɈɈɈɈɋɋɇɇɇɇɇɇ ɘɘɘɘɘɘɘɪɩɪɪɪɪɪɪɪɪɪɪɪ ʂʆʁʣʬʬʬʬʬʯʯʫʫʫʫʫʫ ʴʸʳᴗᴠᴠᴠᴠᴠᴣᴣᴟᴟᴟᴟᴟᴟ ᴮᴲᴭᵏᵘᵘᵘᵘᵘᵛᵛᵗᵗᵗᵗᵗᵗ ᵥ ᵭᵱᵬᶏᶘᶘᶘᶘᶘᶛᶛᶗᶗᶗᶗᶗᶗ ᶠᶤᶟḂḋḋḋḋḋḎḎḊḊḊḊḊḊ ḓḗḒḴḽḽḽḽḽṀṀḼḼḼḼḼḼṀḼṀṀ ṅṉṄṦṯṯṯṯṯṲṲṮṮṮṮṮṮ ṷṻṶẘẘṶạạạạẠẠẠẠẠẠẠẠẠẠẤẟ ẩậẨỊồồồồồỖỖỒỒỒỒỒỒ ớởỚỼₓₓₓₓₓₖₖₒₒₒₒₒₒ ⅎⅎⅡⅢⅣⅤⅥⅥⅎⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠⅠ ⱣⱧⱢꜦꜯꜯꜯꜯꜯꜲꜲꜮꜮꜮꜮꜮꜮꜲꜮꜲꜲ ꜷꜻꜶꝘꝘꜶꝡꝡꝡꝡꝠꝠꝠꝠꝠꝠꝠꝠꝠꝠꝤꝟ ꝩꝭꝨꞍꞣꞣꞣꞣꞣꞦꞦꞢꞢꞢꞢꞢꞢꞦꞢꞦꞦ st st st st st st st st st I S S S S S S i m r r t t v v v v
如果太多,您可以将其与一些named Unicode blocks相交。
例如,以下字符类:
[\p{IsLatin}&&[\p{InBasic_Latin}\p{InLatin_1_Supplement}\p{InLatin_Extended_A}\p{InLatin_Extended_B}]]
将匹配:
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyzºÀÇààååæÜ ñúúúāāāāāāāČČČČČČēęęęě İīīīīīīİńńńńőōōōōōōōōōōō œœœśśśœūŸŸŸŸŸŸŸžžžžžžžžž ƑƑƑƑƒƒƒƒƑƒƒƒƒƒƒƒƒƒƒƑƑƒƑƒ Ƹǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎ Ǫ ǬǰǫȍȖȖȖȖȖș șȕȕȕȕȕȕșȕș ș ȞȢȝȿɈɈɈɈɈɋɋɇɇɇɇɇɇ ɏ