java - 正则表达式仅删除特殊字符而不删除其他语言字母

标签 java regex string regex-negation

我使用正则表达式从名称中删除特殊字符。该表达式将删除除英文字母以外的所有字母。

public static void main(String args[]) {
    String name = "Özcan Sevim.";
    name = name.replaceAll("[^a-zA-Z\\s]", " ").trim();
    System.out.println(name);
}

输出:

zcan Sevim

预期输出:

Özcan Sevim 

我这样做的结果很糟糕,正确的方法是删除基于 ASCII 代码的特殊字符,这样其他字母就不会被删除,有人能帮我用一个只删除特殊字符的正则表达式吗?

最佳答案

您可以使用 \p{IsLatin}\p{IsAlphabetic}

name = name.replaceAll("[^\\p{IsLatin}]", " ").trim();

或者要删除标点符号,只需像这样使用 \p{Punct} :

name = name.replaceAll("\\p{Punct}", " ").trim();

输出

Özcan Sevim

查看 Summary of regular-expression constructs 的完整列表并使用可以帮助您的那个。

关于java - 正则表达式仅删除特殊字符而不删除其他语言字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018532/

相关文章:

java - 错误 : no suitable method found for put(String, int)

java - 如何在 Spring Boot 应用程序中使用 Flyway 启动 H2 db TCP 服务器

JavaFX TextField OnKeyTyped 无法正常工作

javascript - 正则表达式以像素为单位转换所有 rem-calc

string - 如何在 Bash 中连接两个字符串而不使用变量?

java - 带圆角和透明背景的位图

python - 老挝的正则表达式?

c - 从C文件中读取字符串的问题

javascript - 返回字符串的问题

javascript - 使用正则表达式查找字符串中的开始和结束标记