使用正则表达式从全名中删除称呼
Removing salutations from full name using regex
我有像 "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"
你可以试试这个。
\s[A-Z]{2,}+
您可以使用
\W*\b[A-Z]+\b(?!'\b)\.?
详情
\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
我有像 "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"
你可以试试这个。
\s[A-Z]{2,}+
您可以使用
\W*\b[A-Z]+\b(?!'\b)\.?
详情
\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