正则表达式包含所有西班牙语字符和数字

Faa*_*ass 6 java regex

我有一个Java应用程序,我需要一个正则表达式来替换除字符和数字之外的所有字符(包括西班牙字符作为重读元音和\xc3\xb1/\xc3\x91)它还需要包含一些特定的空格字符。

\n\n

我创建了以下正则表达式,但它也删除了重读元音,这不是这个想法

\n\n
string.replaceAll("[^-_/.,a-zA-Z0-9 ]+","")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我只是想接受这些字符..而不是其他字符,例如 \xc3\xa6、\xc3\xa5 或其他字符..

\n

Wik*_*żew 7

您可以使用\\p{L}而不是a-zA-Z

\n\n
string = string.replaceAll("[^-_/.,\\\\p{L}0-9 ]+","");\n
Run Code Online (Sandbox Code Playgroud)\n\n

\\p{L}无论传递给正则表达式编译的修饰符如何,都会匹配所有 Unicode 字母。

\n\n

查看Java 测试

\n\n
List<String> strs = Arrays.asList("!@#\xc5\x81\xc4\x85ka$%^", "Word123-)(=+");\nfor (String str : strs)\n    System.out.println("\\"" + str.replaceAll("[^-_/.,\\\\p{L}0-9 ]+","") + "\\"");\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
"\xc5\x81\xc4\x85ka"\n"Word123-"\n
Run Code Online (Sandbox Code Playgroud)\n\n

模式详细信息:模式匹配除、、、、、、 Unicode 字母、ASCII 数字和空格[^-_/.,\\\\p{L}0-9 ]+之外的任何字符。-__/.,

\n\n

请注意,使用此解决方案,您仍将删除 Unicode 数字,例如\xd9\xa0\xd9\xa1\xd9\xa2\xd9\xa3\xd9\xa4\xd9\xa5\xd9\xa6\xd9\xa7\xd9\xa8\xd9\xa9.

\n\n

您可以使用Mena 建议的 \\p{Alnum} 带有(?U)嵌入标志选项来真正匹配所有 Unicode 字母和数字:

\n\n
string = string.replaceAll("(?U)[^-_/.,\\\\p{Alnum} ]+","");\n
Run Code Online (Sandbox Code Playgroud)\n\n

要仅删除常见欧洲字母以外的 Unicode 字母,只需从此范围中添加\xc3\x80-\xc3\xbf和减去两个非字母 ,即可:\xc3\x97\xc3\xb7

\n\n
string = string.replaceAll("(?U)[^-_/.,A-Za-z\xc3\x80-\xc3\xbf &&[^\xc3\x97\xc3\xb7]]+","");\n
Run Code Online (Sandbox Code Playgroud)\n