¿Cómo puedo eliminar la inicial del medio con un punto al final?
-
22-07-2019 - |
Pregunta
Tengo un montón de nombres en un campo que llevan una inicial del segundo nombre con un '.' al final ..
Necesito una expresión regular para convertir este ejemplo:
Kenneth R.
en
Kenneth
I estaba tratando de construir el mío y encontré este sitio útil por cierto ..
http: // www .gskinner.com / RegExr /
pero soy nuevo en Perl & amp; expresiones regulares y solo podía obtener " ... $ " - que es inútil cuando no hay una inicial del segundo nombre al final del primer nombre ...
acabo de encontrar otro formato de nombre que necesita consideración ... 'R. Kelly 'necesita ser' Kelly '
Solución
Para eliminar la última " palabra " si termina con punto:
my $name =~ s/\w+\.$//i;
(esto supone que no tienes espacio después de eso)
Para eliminar cualquier palabra que termine con punto:
my $name =~ s/\w+\.//i;
mira el modificador / g si quieres eliminarlos todos ...
y BTW se hacen una lista de casos de prueba para verificar su solución luego intente con datos de palabras reales, probablemente obtendrá algunas sorpresas ...
Otros consejos
Para ocuparse del caso R. Kelly:
s/\w\. *//g
Aquí hay una prueba rápida:
$ echo 'R. Kelly
Kenneth R.
R. Kemp R.
John Q. Smith' | perl -pe 's/\w\. *//g'
Kelly
Kenneth
Kemp
John Smith
Sugeriría que:
- Se requiere la opción global (
g
). - La opción que no distingue entre mayúsculas y minúsculas (
i
) no lo es. - Podría considerar buscar iniciales en mayúsculas (
[: upper:]
) solamente. - Múltiples caracteres "iniciales" debe ser visto con sospecha (Entonces
w +
es probablemente un error a menos que sus datos tengan casos relevantes). - Lea
perldoc perlre
para obtener más información.