Wie kann ich die mittlere Initiale mit einem Punkt am Ende entfernen?
-
22-07-2019 - |
Frage
Ich habe ein paar Vornamen in einem Feld, die eine mittlere Initial mit einem '.' Am Ende..
Ich benötige einen regulären Ausdruck, um dieses Beispiel zu konvertieren:
Kenneth R.
hinein
Kenneth
Ich habe versucht, meine eigene zu erstellen und bin übrigens auf diese nützliche Seite gestoßen.
http://www.gskinner.com/RegExr/
aber ich bin neu in Perl und regulären Ausdrücken und konnte nur „...$“ bekommen – was nutzlos ist, wenn am Ende des Vornamens kein mittlerer Anfangsbuchstabe steht....
Ich habe gerade ein anderes Namensformat gefunden, das berücksichtigt werden muss ...'R.„Kelly“ muss „Kelly“ sein
Lösung
Um das letzte „Wort“ zu entfernen, wenn es mit dem Punkt endet:
my $name =~ s/\w+\.$//i;
(dies setzt voraus, Sie haben keinen Platz danach)
ein beliebiges Wort entfernen mit Punkt endet:
my $name =~ s/\w+\.//i;
Blick auf die / g Modifikator, wenn Sie wollen, dass sie alle ... entfernen
und machen Sie sich BTW einen Testfall-Liste Ihre Lösung zu überprüfen dann mit echten Wortdaten versuchen, werden Sie wahrscheinlich einige Überraschungen, ...
Andere Tipps
Sich um den R kümmern.Kelly-Fall:
s/\w\. *//g
Hier ein kurzer Test:
$ echo 'R. Kelly
Kenneth R.
R. Kemp R.
John Q. Smith' | perl -pe 's/\w\. *//g'
Kelly
Kenneth
Kemp
John Smith
Ich würde Folgendes vorschlagen:
- Die globale Option (
g
) ist erforderlich. - Die Option ohne Berücksichtigung der Groß-/Kleinschreibung (
i
) ist es nicht. - Sie könnten erwägen, nach Großbuchstaben zu suchen (
[:upper:]
) nur Initialen. - „Initialen“ mit mehreren Zeichen sollten mit Argwohn betrachtet werden.(Also
w+
ist wahrscheinlich ein Fehler, es sei denn, Ihre Daten enthalten relevante Fälle.) - Lesen
perldoc perlre
für mehr Informationen.