Ich lerne Regex, und ich kann die Gruppierung in Java nicht verstehen. Zur Zeit meines regulärer Ausdruck istRegex Java Der erste Buchstabe ist nicht in der richtigen Gruppe enthalten?
([^:]?)(?![email])(\w+[\. ]?\w+)\ ?\@[\. ]?(\w+\.?\w+)\.edu
Mein Ziel der Extrakt E-Mail-Adressen, die in verschiedenen Formaten kommen. Ein Beispiel für eine Linie der Zeichenfolge, die mit dieser nicht funktioniert, ist:
To get on the vcode mailing list, please email [email protected]
Mein Ausdruck die richtige Zeichenfolge entspricht aber
group(1) = e
group(2) = ngler
Was ich will, ist
group(2) = engler
Es funktioniert für andere Zeichenfolgen wie href = "mailto: [email protected]">
Danke, dass Sie sich die Zeit genommen haben, mir zu helfen aus. Übrigens verwende ich http://www.regexplanet.com/advanced/java/index.html, um mir zu helfen, es wandelt Regex-Ausdrücke in diejenigen, die Java versteht und zeigt Ihnen die Gruppierungen.
Danke Affe
Antwort: ([^:]?) (?! (E-Mail)) ([.] \ W + \ w +?) \ B \ b \ \ @ [?. ]? (\ w +.? \ w +). edu, ich wusste nicht, dass es von Charakteren behandelt wurde, danke.
Genau was sind Regeln (abstrakt) für die Entscheidung, ob etwas extrahiert werden soll? Gerade anfangen, Ihre Regex zu lesen, auch der allererste Teil (Option nicht-Doppelpunkt?) Lässt mich fragen, was Ihre Kriterien sind. –
Eckige Klammern um das Wort "E-Mail" lassen Ihre Regex ein Zeichen in der Menge {e, m, a, i, l} erfassen. Ich glaube nicht, dass das deine Absicht ist. – phatfingers
@Ben Lee Ich versuche, jede Zeichenfolge zu extrahieren, die eine E-Mail in einer abstrakten Form enthält. Wie zum Beispiel jks an der Robotik, stanford, edu, ich sollte in der Lage sein, jks in einer Gruppe zu extrahieren, und robotics.stanford in einer anderen Gruppe. Sie kommen in vielen seltsamen Formen, es ist für einen Kurs, den ich nehme. Wenn Sie irgendwelche Vorschläge haben, wie ich meine Regex verbessern kann, teilen Sie mich gerne, da ich noch neu bin und lerne. – Miles