我需要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ºÀÇààååæÜ ñúúúāāāāāāāČČČČČČēęęęě İīīīīīīİńńńńőōōōōōōōōōōō œœœśśśœūŸŸŸŸŸŸŸžžžžžžžžž ƑƑƑƑƒƒƒƒƑƒƒƒƒƒƒƒƒƒƒƑƑƒƑƒ Ƹǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎǎ Ǫ ǬǰǫȍȖȖȖȖȖș șȕȕȕȕȕȕșȕș ș ȞȢȝȿɈɈɈɈɈɋɋɇɇɇɇɇɇ ɏ

07-26 07:40