我在一个字段中有一堆名字,带有'。'的中间首字母。最后..
我需要一个正则表达式来转换这个例子:
Kenneth R.
成为
肯尼斯
我正在努力建立自己的,并找到了这个有用的网站btw ..
http://www.gskinner.com/RegExr/
但我是新的到Perl&正则表达式,只能得到“... $” - 当第一个名字的末尾没有中间的首字母时,这是没用的。
答案 0 :(得分:3)
如果以dot:
结尾,则删除最后一个“单词”my $name =~ s/\w+\.$//i;
(这假设你之后没有任何空格)
删除任何以dot结尾的单词:
my $name =~ s/\w+\.//i;
如果要将它们全部删除,请查看/ g修饰符...
和BTW让自己成为测试用例列表来检查您的解决方案 然后尝试使用真实的单词数据,你可能会得到一些惊喜......
答案 1 :(得分:2)
照顾R.凯利案:
s/\w\. *//g
这是一个快速测试:
$ echo 'R. Kelly
Kenneth R.
R. Kemp R.
John Q. Smith' | perl -pe 's/\w\. *//g'
Kelly
Kenneth
Kemp
John Smith
我建议:
g
)。i
)不是。[:upper:]
)首字母。w+
可能是一个错误,除非你的数据有相关案例。)perldoc perlre
了解详情。