python regex match en option crochets
J'ai les chaînes de caractères suivantes:
1 "R J BRUCE & OTHERS V B J & W L A EDWARDS And Ors CA CA19/02 27 February 2003",
2 "H v DIRECTOR OF PROCEEDINGS [2014] NZHC 1031 [16 May 2014]",
3 '''GREGORY LANCASTER AND JOHN HENRY HUNTER V CULLEN INVESTMENTS LIMITED AND
ERIC JOHN WATSON CA CA51/03 26 May 2003'''
Je suis en train d'essayer de trouver une expression régulière qui correspond à l'ensemble d'entre eux. Je ne sais pas comment faire correspondre option entre crochets autour de la date à la fin de la chaîne par exemple [16 Mai 2014].
casename = re.compile(r'(^[A-Z][A-Za-z\'\(\) ]+\b[v|V]\b[A-Za-z\'\(\) ]+(.*?)[ \[ ]\d+ \w+ \d\d\d\d[\] ])', re.S)
La date regex à la seule fin de matchs cas avec des dates en crochet mais pas ceux sans.
Merci à tout le monde qui a répondu. @Matt Clarkson ce que je suis en train de match est une décision judiciaire "poignée" dans un texte plus grand. Il y a une grande variation au sein de ces poignées, mais ils commencent tous au début d'une ligne " v " pour le rapport entre les noms des parties et la date à la fin. Surtout les noms des parties sont en capital, mais pas exclusivement. Je suis en train d'avoir un seul match par document et pas de faux positifs.
Sont les 3e et 4e lignes sur la même ligne, ou ils ne contiennent pas d'un physique de saut de ligne entre 'ET' et 'ERIC' ?
Je dirais que le fait qu'il est entouré de triple-des citations qu'il a un physique de saut de ligne.
OriginalL'auteur user740875 | 2014-08-26
Vous devez vous connecter pour publier un commentaire.
J'ai obtenu tous pour correspondre à l'aide de cette (Vous aurez besoin d'ajouter la casse drapeau):
Regex Démo
Explication:
(
Commencer la capture de groupe[a-z\'&\(\) ]+
Correspondre à un ou plusieurs des caractères de ce groupe\b
Correspondre à une limite de motv
Match le caractère'v'
littéralement\b
Correspondre à une limite de mot[a-z&\'\(\) ]+
Correspondre à un ou plusieurs des caractères de ce groupe(?:
Commencer non-capture d'un groupe.*?
Correspondent à rien de ce)
Fin de non-capture d'un groupe\[?\d+ \w+ \d{4}\]?
Correspondre à une date, éventuellement entouré par des crochets)
Fin du groupe de capture?
en regex signifie "0 ou 1 caractère précédent (plage)", ce qui signifie en gros que c'est facultatif. Il peut être là, ou il pourrait ne pas être là, juste aussi longtemps que il n'y a plus d'un titre.OriginalL'auteur RevanProdigalKnight
À l'aide de votre regex et les chaînes d'entrée, on dirait que vous correspond seulement la 2e ligne (si vous vous débarrasser de la '^' au début de la regex. J'ai ajouté des commentaires en ligne pour chaque section de l'expression régulière que vous avez fourni pour le rendre plus clair.
Pouvez-vous nous indiquer ce que vous essayez de capturer à partir de chaque ligne? Voulez-vous l'ensemble de la chaîne? Seulement le mot précédant le seul de la lettre "v"? Voulez-vous la date capturé séparément?
Selon les parties que vous souhaitez capturer, chaque section peut être divisée en de leurs respectives correspondent à des groupes: regex101.com exemple. C'est un peu plus lâche que la vôtre (la capture de la totalité de l'article entre guillemets au lieu d'un seul mot précédant le solitaire "v"), puis séparés pour aider à la lisibilité (chaque "groupe" sur sa propre ligne).
Cet exemple suppose également le retour à la ligne est intentionnelle, et prend en charge le retour à la ligne composant (attention: il POURRAIT aspirer de plus que vous avez l'intention, selon que la date à la fin obtient assorti ou non).
OriginalL'auteur OnlineCop
Comment faire des crochets en option, peut être réalisé comme ceci:
[\[]*
avec le*
il fait l'ouverture[
facultatif.Quelques recommandations si je peut:
Ce
\d\d\d\d
pourrait aussi être exprimé comme\d{4}
[v|V]
dans la regex de ce qui est à l'intérieur de la[]
est déjà l'une ou l'autre|
n'est pas nécessaire[vV]
Et voici ce qu'un démo en ligne
OriginalL'auteur Dalorzo