Java 使用正则表达式从全名中删除称呼语
我有像Java 使用正则表达式从全名中删除称呼语,java,regex,replaceall,Java,Regex,Replaceall,我有像“John Connele MCA MD”和“John O'Connele”这样的名字,我使用了这个正则表达式“s*[A-Z]+(?:\.\124;\ b)” 正则表达式的目的是只删除称呼和标题,我得到的输出是“John Connele”,而正确的输出应该是“John O'Connele”,您可以试试这个 \你可以试试这个 \s[A-Z]{2,}+您可以使用 \W*\b[A-Z]+\b(?!'\b)\.? 看 详细信息 \W*-任何0+非单词字符 \b-单词边界(我们需要匹配整个
“John Connele MCA MD”
和“John O'Connele”
这样的名字,我使用了这个正则表达式“s*[A-Z]+(?:\.\124;\ b)”
正则表达式的目的是只删除称呼和标题,我得到的输出是“John Connele”,而正确的输出应该是“John O'Connele”,您可以试试这个
\你可以试试这个
\s[A-Z]{2,}+您可以使用
\W*\b[A-Z]+\b(?!'\b)\.?
看
详细信息
-任何0+非单词字符\W*
-单词边界(我们需要匹配整个单词)\b
-1+大写ASCII字母[A-Z]+
-单词末尾(单词边界)\b
-不(?!”\b)
跟一个单词char可以直接放在当前位置的右侧“
-1或0\.?
字符
\W*\b[A-Z]+\b(?!'\b)\.?
看
详细信息
-任何0+非单词字符\W*
-单词边界(我们需要匹配整个单词)\b
-1+大写ASCII字母[A-Z]+
-单词末尾(单词边界)\b
-不(?!”\b)
跟一个单词char可以直接放在当前位置的右侧“
-1或0\.?
字符
您的代码未编译-正则表达式格式不正确。此外,您似乎并不希望删除“问候语”,而是希望删除标题。您需要搜索一个适当的标准,例如,可能是空格后跟仅大写字母和空格的序列。有时名称可以是“John O'Connele,MCA,MD,因此我认为我不能依赖空格”。您需要找到一个合适的规则-我的规则只是一个示例。您可以尝试
{2,}
而不是+
您的代码无法编译-正则表达式格式不正确。此外,您似乎不是在寻找要删除的“问候语”,而是标题。您需要搜索适当的标准,例如,可能是空格,后面是仅大写字母和空格的序列。有时名称可能是“John O'Connele,MCA,医学博士,所以我不认为我可以依赖空格。你需要找到一个合适的规则-我的只是一个例子。你可以尝试{2,}
而不是+
String fullName = "John O'Connele MCA,MD.";
fullName = fullName.replaceAll("\\W*\\b[A-Z]+\\b(?!'\\b)\\.?","").trim();
System.out.println(fullName); // => John O'Connele