java - 使用正则表达式从全名中删除称呼语

标签 java regex replaceall

我的名字像“John Connele MCA MD”“John O'Connele”,我使用了这个正则表达式“s*[A-Z]+( ?:\.|\b)".

String fullName = "John O'Connele MCA MD";
fullName = fullName.replaceAll("s*[A-Z]+(?:\.|\b)","").trim;
System.out.println(fullName)

正则表达式的目的是仅删除称呼和标题,我得到的输出是“John Connele”,而正确的输出应该是“John O'Connele”

最佳答案

您可以使用

   \W*\b[A-Z]+\b(?!'\b)\.?

请参阅regex demo

详细信息

  • \W* - 任意 0+ 个非单词字符
  • \b - 单词边界(我们需要匹配整个单词)
  • [A-Z]+ - 1+ 个大写 ASCII 字母
  • \b - 词尾(词边界)
  • (?!'\b) - 后跟单词 char 的 ' 不允许紧邻当前位置的右侧
  • \.? - 1 或 0 . 个字符。

Java demo (请注意,所有反斜杠在字符串文字内都是双斜杠,以表示文字反斜杠、正则表达式转义):

String fullName = "John O'Connele MCA,MD.";
fullName = fullName.replaceAll("\\W*\\b[A-Z]+\\b(?!'\\b)\\.?","").trim();
System.out.println(fullName); // => John O'Connele

关于java - 使用正则表达式从全名中删除称呼语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925019/

相关文章:

Python正则表达式检查字符串是否包含方法调用

regex - 使用 sed 获取文件的 IPv4 地址并使用前缀导出

java - java回文错误

Java 正则表达式 : Normalize all escaped or non-escaped newlines - why does this fail?

java - 如何在 PHP 中与 java 代码通信

java - javax.tools 是否依赖于 JDK?

Java第二类mysql连接失败

java - Maven JAR 插件 3.0.2 错误 : You have to use a classifier to attach supplemental artifacts to the project instead of replacing them

java - 如何使用正则表达式审查 Java 中的特定单词

Java合并多个replaceAll - 子字符串出现一次或多次