正则表达式解析名字和姓氏

时间:2011-05-13 16:20:50

标签: regex username

我解析了一些日志,在某些情况下,用户名显示为FirstName.LastName,在其他情况下显示为FLastName。我只是想知道是否有可能将名称解析为FLastName。 例如Joe.Doe和JDoe应该都是JDoe。 谢谢。

3 个答案:

答案 0 :(得分:1)

这样做:

(.)(?:[^\.]*\.)(.+)$

基本上它抓住第一个字符,然后允许多个字符后跟一个点,然后抓住其余的字符。替换字符串将是:

$1$2

但这取决于您正在使用的正则表达式工具。

Try it on RegExr(感谢stema,我不知道这个网站。)

答案 1 :(得分:0)

不确定您使用的是什么正则表达式平台,但这可以在sed中使用:

sed 's/\([a-z[A-Z]\).*\.\(.*\)$/\1\2/'

对于字符串"FirstName.LastNameFLastName,它会提供输出:

FLastName

答案 2 :(得分:0)

我的解决方案,(但其他两个也会起作用)

^([a-zA-Z])(?:.*\.)?(.*)$

See online here on Regexr

它匹配第一个字母,然后是下一个部分,直到点是可选的。最后匹配字符串直到结束。第一个字母在第1组,LastName在第2组。

所以用$ 1 $ 2替换(或者\ 1 \ 2,取决于你的正则表达式引擎)