2016-05-18 11 views
1

Ich versuche, eine RegEx zu erstellen, um Name und E-Mail-Adresse aus einer Zeichenfolge zu extrahieren.RegEx zum Extrahieren des Kontaktnamens und der E-Mail von der Zeichenfolge

Ich weiß, es gibt Tonnen von Fragen hier, und ging nur durch einige und sie funktionieren nicht für mich.

Dies ist die RegEx Ich habe bisher

([\'(\w\d\s*)\'\s]*)<([a-z\d._%+-][email protected][a-z\d.-]+\.[a-z]{2,4}\b)> 

Die Saiten werden können wie

Name Surname [email protected] 

'Name Surname' <[email protected]> 

'Name Surname' [email protected] 

Name Surname <[email protected]> 

So konnte ich denke, Sie sehen, dass sowohl die "und die <> völlig freigestellt sein kann.

Ich brauche es, um die Ergebnisse in zwei Gruppen zu erhalten, eine für den Kontaktnamen und eine für die E-Mail.

Ich benutze klassische asp wegen Legacy-Code in der Firma.

Danke

+1

Try [ '? '? (\ W + (?: \ S + \ w +) *)' \ s + <(\ S + @ [\ W.-] + \. [a-zA-Z] {2,4} \ b) '] (https://regex101.com/r/jV4vO1/1) –

+0

Willst du damit sagen, dass du die obigen Strings verwenden willst? extrahiere zwei Datenstücke, den Namen und die E-Mail? –

+0

@RudyTheHunter Das ist richtig, ich würde gerne eine mit dem Namen Nachname und eine mit der E-Mail-Adresse –

Antwort

2

können Sie

verwenden
'?(\w+(?:\s+\w+)*)'?\s+<?(\[email protected][\w.-]+\.[a-zA-Z]{2,4}\b) 

Siehe regex demo

Muster Erklärung:

  • '? - ein optionales '
  • (\w+(?:\s+\w+)*) - Gruppe 1 Matching:
    • \w+ - 1 oder mehr alphanumerische/streichen Symbole
    • (?:\s+\w+)*-0 oder mehrere Sequenzen von 1+ 1+ Leerzeichen gefolgt mit alphanumerischen/streichen Symbole
  • '? - ein optional '
  • \s+ - 1 oder mehr Leersymbole
  • <? - eine optionale <
  • (\[email protected][\w.-]+\.[a-zA-Z]{2,4}\b) - Gruppe 2 passenden
    • \S+ - 1+ Nicht-Leerzeichen Symbole
    • @ - Ein Literal @
    • [\w.-]+-1 oder mehr Zeichen: alphanumerische/unterstreichen, Punkt oder Bindestrich
    • \. - ein wörtlicher Punkt
    • [a-zA-Z]{2,4}-2 zu 4 ASCII-Buchstaben
    • \b - eine Hinterwortgrenze
+0

Das ist großartig danke, wie würdest du es jetzt aktualisieren, damit der Name Teil optional ist? Zum Beispiel, wenn ich nur [email protected] in der Zeichenfolge bekomme? –

+1

Verwenden Sie [''? (\ W + (?: \ S + \ w +) *)?' \ S *

0

Hier sind zwei Regex. Verwenden Sie die erste, um die E-Mail aus der Zeichenfolge zu entfernen, und die zweite, um einen zweiteiligen Namen zu erhalten.

Email 
[\w\.\-][email protected](([\w\-]+)\.)+(\w){2,3} 

Name 
\b[a-zA-Z]*[^\[email protected]]\b\s?\b[a-zA-Z]*[^\[email protected]]\b 
Verwandte Themen