2016-11-22 4 views
0

Ich muss die Zitate in einem Dokument übereinstimmen. Die Zitate können folgende Formen haben: Autorennamen, Jahr; Autorennamen (Jahr); (Autorennamen, Jahr) Zum Beispiel: "James et al., 2010", "James & Juda, 2010", "James & Juda (2010)", "(James & Juda, 2010)". Ich habe versucht:Regulärer Ausdruck für übereinstimmende Buchstaben gefolgt von Ziffern

[A-Za-z]+[0-9]{4} 

und

(([A-Z]([A-Za-z][&.,])+\d{4}) 

Ein oder mehrere Vorkommen von einigen Interpunktionszeichen gefolgt Zeichen und dann 4 Ziffern (Angabe Jahr) ist das, was ich meinte. Aber es funktioniert nicht. Bitte helfen Sie mir in dieser Hinsicht.

+0

'Aber es ist nicht working' ... können Sie uns den entsprechenden Code? –

+0

Sie berücksichtigen Leerstellen –

Antwort

1

Unter dem regulären Ausdruck stimmen alle von Ihnen angegebenen Proben überein.

(\S+\s*)+?(,|\()\s*(\d+)\)?

+0

Vielen Dank. Das funktioniert. Kannst du es bitte erklären. – user3568044

+0

Hallo, Wenn ich dies an einer ganzen Schnur versuchte, funktioniert es nicht. Der Code ist wie folgt: "s =" James et al., (2010) schlägt zwei Algorithmen vor, nämlich Task-Trennung und Task-Parceling. " s1 = re.match (r '(\ S + \ s *) +? (, | \() \ s * (\ d +) \)?', s) .string'. Die Ausgabe war die gesamte Zeichenfolge. Was aber erforderlich ist, ist nur ** James et al., (2010) **. – user3568044

+0

versuchen 're.match (r '(\ S + \ s *) +? (, | \() \ S * (\ d +) \)?', S) .group (0)' –

Verwandte Themen