Regex: Navne

Isoler navn i tekststreng:

Et navn af typen efternavn (med eller uden mellemrum, bindestreger) + et antal initialer med punktum kan adskilles fra øvrige tekst med:

(.*?), ([\w\.]{1,})\., \1, \2.

Hvis navnet indeholder generations-suffikser, kan de slettes med:

Jr\., | Sr\., | 2nd\., | 3rd\. | II. | III. ,

Evt: Erstat alle bindestreger med mellemrum

Konvertering af fulde navne til efternavn, initialer:

En navneliste kan konverteres med følgende regex, først for alle navne med 3 fornavne, derefter med 2 og til slut med 1 fornavn.
Det er nødvendigt at erstatte med en andet mønster "til højre" fordi regex for færre fornavn(e) ellers snupper initialer fra allerede korrekt forkortede navne:

xxx ([\w\ \-]*+), (\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) xxx xxx \1, \2\4\6 ¤¤¤ xxxx

Med efternavn + 3 fornavne:

xxx ([\w\ \-]*+), (\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) xxx

erstat med:

Med efternavn + 2 fornavne:

xxx ([\w\ \-]*+), (\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) xxx

erstat med:

xxx \1, \2 ¤¤¤ xxxx

Med efternavn + 1 fornavn:

xxx ([\w\ \-]*+), (\w)([\w\-]*+) xxx

erstat med:

xxx \1, \2 ¤¤¤ xxxx

Til slut erstattes ¤¤¤ med den oprindelige adskillelse mellem navneform og omgivende tekst, evt. blot slettes helt.

Konvertering af fulde navne til efternavn + initialer:

Fjern først alle punktummer efter evt. initialer
Erstat alle bindestreger med mellemrum
Fjern alle endestillede blanktegn, evt. flere gange

Med efternavn og eet fornavn:

xxx (\w)([\w\-]*+) ([\w\-]*+)$

erstat med:

xxx \3, \1

Med efternavn og to fornavne:

xxx (\w)([\w\-]*+) (\w)([\w\-]*+) ([\w\-]*+)$

erstat med

xxx \5, \1 \3

Med efternavn + tre fornavne:

(\w)([\w\-]*+) (\w)([\w\-]*+) (\w)([\w\-]*+) ([\w\-]*+)

erstat med:

\7, \1 \3 \5

Konvertering af Fornavn(e) Efternavn til Efternavn, Fornavne

Med 3 fornavne:

xxx ([\w\-]*+) ([\w\-]*+) ([\w\-]*+) ([\w\-]*+)$

erstat med:

xxx \4, \1 \2 \3

Med 2 fornavne:

xxx ([\w\-]*+) ([\w\-]*+) ([\w\-]*+)$

erstat med:

xxx \3, \1 \2

Konvertering af Fornavn(e) Efternavn til Efternavn, Fornavn(e):

Benyt følgende regex-streng for hvert ord i navnet: ([\w\-]*+) omgivet af de skilletegn, der findes i teksten: mellemrum, venstre/højrestillet tabulator, linieskift m.m.

Metoden virker også for navne med æ, ø og å. Den virker ikke, hvis navnet indeholder punktum eller overflødige mellemrum i begyndelsen eller enden af navne-elementer.

Eksempler:

3-leddet navn med TAB-adskillelse til resten af tekst:

^([\w\-]*+) ([\w\-]*+) ([\w\-]*+)\t — erstat med: \3, \1 \2\t

2-leddet navn ..

^([\w\-]*+) ([\w\-]*+)\t — erstat med: \2, \1\t

Adskille Efternavn + initialer fra resten af tekststreng

^([\w\ \-]*+), ([\w\.\-]*+), xxx

erstat med

\1, \2 \t xxx

Rette initialer med punktum til initialer kompakt eller med mellemrum

Find alle navne med een initial - her er navn adskilt fra resten af line med TAB:

, ([\w])\.\t

erstat med:

, \1\t

Derefter alle navne med to initialer:

, ([\w])\.([\w])\.\t

erstat med

, \1\2\t

-osv.
Sammensatte fornavne indeholder ofte bindestreger:

, (\w)\.\-(\w)\.\t

erstat med:

, \1\2\t

Er en linies / et datafelts første ord egt. navn ?

Lav en global find/erstat med:

1) Lineskift erstattes med linieskift#

2) #([\w\ \-]*+), ([\w\.\-]*+), (.*?)$ erstattes med #Navn: \1, \2, \3

3) Alle linier, der ikke indledes med et navn kan findes og det foregående navn indsættes med:

Navn: ([\w\ \-'?]*+), ([\w\.\-]*+), (.*?)$
#

- erstat med:

Navn: \1, \2, \3
Navn: \1, \2,

Eller: marker de linier der indeholder (starter efter f.eks. TAB) et personnavn:

([\w\ \-]*+), ([\w\.\-]*+), (.*?)$

erstat med:

Name: \1, \2 \3

2-s2.0-57249101797 Name: Chernov, M. Department of Neurosurgery, Neurological Institute, Tokyo Women's Medical University, Tokyo, 162-8666, Japan
2-s2.0-57249101797 International Research and Educational Institute for Integrated Medical Sciences (IREIIMS), Tokyo Women's Medical University, Tokyo, 162-8666, Japan

Erstat derefter TAB med TAB TAB og tilslut TAB Name: med TAB, så er alle institutionsnavne/adresser flyttet ud i (her) 3. søjle.

Efternavn, Fornavne adskilt fra andre navne med komma

([^,\n\r]*?),([^,]*?), - erstat med: \1, \2;

Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-ShareAlike 3.0 License