Ich möchte einen regulären Ausdruck für C#, der "Johnson", "Del Sol" oder "Del La Range" entspricht; mit anderen Worten, es sollten Wörter mit Leerzeichen in der Mitte übereinstimmen, aber kein Leerzeichen am Anfang oder am Ende.Regulärer Ausdruck in C# für Nachname, der internen Speicherplatz enthält
Antwort
Die? Qualifier ist dein Freund. Macht eine kürzest mögliche Übereinstimmung statt einer gierigen. Verwenden Sie es für die Vornamen, wie in:
^(.+?) (.+)$
Gruppe 1 Zupacken alles bis zum ersten Platz, Gruppe 2, den Rest bekommt.
Natürlich, was machen Sie, wenn der erste Name Leerzeichen enthält?
Schön und einfach, aber ich denke, es wird auch "238 39592" passen, was keine Worte sind. –
dann ersetzen "." mit "\ w" oder "[a-zA-Z]" – Rich
Nicht sicher, ob das OP den Nachnamen selbst oder in einer Zeichenfolge, die sowohl den Vor- als auch den Nachnamen enthält, abgleichen möchte ... Ich nahm den ersteren währenddessen an scheinen das letztere getan zu haben. Dennoch scheint es, dass Ihre Regex Leerzeichen am Anfang oder Ende erlaubt, die behoben werden müssen. – Noldorin
Probieren Sie etwas wie folgt aus:
^[^\s][\w\s]*[^\s]$
Ich glaube nicht, dass Nachnamen Namen enthalten können ... –
Das die Arbeit machen sollte:
^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$
Edit: Hier ist eine leichte Verbesserung, die ein letzteren Namen und Bindestriche/Apostroph im Namen erlaubt :
^[a-zA-Z'][a-zA-Z'- ]*[a-zA-Z']?$
Malcolm X wäre nicht glücklich darüber ... (erfordert mindestens 2 Buchstaben Nachnamen, die ... ist) –
Der kürzeste REAL Name, den ich mir vorstellen kann ist "Ng." Sollte gut sein. ;) –
Eine von Null verschiedene Anzahl von Leuten hat den "echten" Nachnamen von "U" ... –
^\p{L}+(\s+\p{L}+)*$
Diese Regex hat folgende Eigenschaften:
- Will einen Nachnamen einen Buchstaben entsprechen (z Malcolm X Nachname)
- Wird nicht zuletzt Namen entsprechen die Zahlen enthalten (wie alles mit einem
\w
oder ein[^ ]
wird) - Spiele Unicode Buchstaben
Aber was Nachnamen wie „O'Connor“ oder Nachnamen Bindestrich ... hmm ...
ich denke, das mehr ist, was Sie suchen:
^[^ ][a-zA-Z ]+[^ ]$
diese shou ld passt den Anfang der Zeile ohne Leerzeichen, Buchstaben oder Leerzeichen und ohne Leerzeichen am Ende an.
Dies funktioniert in irb, aber letztes Mal, dass ich mit C# gearbeitet, habe ich ähnliche reguläre Ausdrücke verwendet:
(null ist gut, nil Mittel versagt)
>> "Di Giorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> "DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> " DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "DiGiorno " =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "Di Gior no" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
Die Verwendung der [^] stimmt mit Nachnamen überein, die mit Zahlen, Interpunktion usw. beginnen oder enden ... –
Danny hat Recht. Ich reagierte mit der gleichen Lösung und zog sie zurück, als ich das erkannte. –
Im Namen „Salah ad -Dīn Yūsuf ibn Ayyūb "(siehe http://en.wikipedia.org/wiki/Saladdin), welches ist der Vorname und welches ist das letzte? Was ist mit dem Namen "Roberto Garcia y Vega" (erfunden)? "Chiang Kai-shek" (siehe http://en.wikipedia.org/wiki/Chang_Kai-shek)?
Leerzeichen in Namen sind die kleinsten Ihrer Probleme! Siehe Personal names in a global application: What to store.
Ich stimme zu. Egal, wie sehr Sie es versuchen, Sie werden immer Namen finden, die nicht richtig zusammenpassen. Ich meine, wenn Sie nicht die vollständige Kontrolle darüber haben, welche Namen Sie analysieren. –
Hier ist eine bessere:
/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/
Standard Interpunktion Erlaubt und Räume, kann aber nicht mit Interpunktion beginnen.
- 1. regulärer Ausdruck "enthält" einen anderen regulären Ausdruck
- 2. Regulärer Ausdruck in C
- 3. C# Regulärer Ausdruck
- 4. Regulärer Ausdruck in C# .net
- 5. Regex Regulärer Ausdruck in C#
- 6. C# regulärer Ausdruck arbeitet
- 7. Regulärer Ausdruck C#
- 8. Mehrzeiliger regulärer Ausdruck in C#
- 9. Regulärer Ausdruck, der alle spezifischen Buchstaben in Notepad enthält ++
- 10. Regulärer Ausdruck zum Extrahieren von Text, der Zeichen enthält
- 11. Regulärer Ausdruck für Attributwert
- 12. Regulärer Ausdruck für java.util.regex.Pattern
- 13. regulärer Ausdruck für DOT
- 14. Regulärer Ausdruck für asp.net
- 15. Regulärer Ausdruck für Dateierweiterung
- 16. Regulärer Ausdruck für Preisvalidierung
- 17. regulärer Ausdruck für „def“
- 18. Regulärer Ausdruck für Bankkontonummer?
- 19. Regulärer Ausdruck für niederländische Postleitzahl
- 20. Regulärer Ausdruck in Powershell
- 21. Regulärer Ausdruck für das Datum
- 22. Regulärer Ausdruck
- 23. Regulärer Ausdruck für die Dezimalzahl
- 24. Regulärer Ausdruck für Daten in R
- 25. Regulärer Ausdruck C# include Datei
- 26. regulärer Ausdruck in Javascript?
- 27. C# -Windows App - Regulärer Ausdruck Hilfe
- 28. Regulärer Ausdruck für nicht leer
- 29. Regulärer Ausdruck für diese Funktion
- 30. Regulärer Ausdruck Erklärung für vim
Wie sieht die Eingabezeichenfolge aus? Ist der Nachname der einzige Teil der Zeichenfolge, oder ist es ein Satz oder möglicherweise ein vollständiger Name mit optional mehr Leerzeichen? Ich denke, Kontext ist hier wichtig. – Rich