Expressions régulières - Patterns pour RegExp

ROGER2327

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re...

Re Roger

J'ai à nouveau testé de mon côté et je ne trouve rien à redire à votre dernière proposition.
Cela me semble tout simplement parfait !
Si cependant, d'autres retouches s'avéraient nécessaires, je ne manquerai pas de vous le faire savoir.

Je vais maintenant m'atteler à la rédaction du motif dès que j'en aurai le temps afin de permettre de capturer toute chaîne de caractère s'apparentant à une date de type Républicain (xxxxxxxxxxxx9xPluviôsexxxAnxxx2), de l'extraire (9 Pluviôse An 2) afin de la soumettre au traitement de votre fonction.

A+
Parfait, je suivrai la discussion en ce qui concerne la partie RegExp.


À propos de l'usage du calendrier républicain :
Il a été dit plus haut que l'usage du calendrier cesse en l'An XIV. Ce n'est pas tout à fait exact, car si le petit caporal en suspend l'usage à compter du premier janvier 1806, le calendrier reste plus ou moins secrètement en usage jusqu'à nos jours chez les véritables républicains. Il redevient même officiel durant la glorieuse Commune de Paris. Il est notamment employé dans le Journal officiel de la Commune de Paris, dont voici un extrait :

Citoyens,

La porte de Saint-Cloud, assiégée de quatre côtés à la fois par les feux du Mont-Valérien, de la Butte de Mortemart, des Moulineaux et du fort d’Issy, que la trahison a livré ; la porte de Saint-Cloud a été forcée par les Versaillais, qui se sont répandus sur une partie du territoire parisien.
Ce revers, loin de vous abattre, doit être un stimulant énergique. Le Peuple qui détrône les rois, qui détruit les Bastilles ; le Peuple de 89 et de 93, le Peuple de la Révolution ne peut perdre en un jour le fruit de l’émancipation du 18 mars.
Parisiens, la lutte engagée ne saurait être désertée par personne ; car c’est la lutte de l’avenir contre le passé, de la Liberté contre le despotisme, de l’Egalité contre le monopole, de la Fraternité contre la servitude, de la solidarité des peuples contre l’égoïsme des oppresseurs.

AUX ARMES !

Donc, AUX ARMES ! que Paris se hérisse de barricades, et que, derrière ces remparts improvisés, il jette encore à ses ennemis son cris de guerre, cri d’orgueil, cri de défi, mais aussi cri de victoire ; car Paris, avec ses barricades est inexpugnable.
Que les rues soient dépavées : tout d’abord, parce que les projectiles ennemis, tombant sur la terre, sont moins dangereux ; ensuite, parce que ces pavés, nouveaux moyens de défense, devront être accumulés, de distance en distance, sur les balcons des étages supérieurs des maisons.
Que le Paris révolutionnaire, le Paris des grands jours fasse son devoir ; la Commune et le Comité de salut public feront le leur.

Le Comité de Salut public.
ANT. ARNAUD, E. EUDES, F. GAMBON, G. RANVIER.

Hôtel de ville, le 2 prairial an 79.


Bonne continuation.​


ROGER2327
#5385


Vendredi 20 Décervelage 139 (Saint Outlaw, aristocrate - fête Suprême Quarte)
27 Nivôse An CCXX, 6,0953h - plomb
2012-W03-2T14:37:43Z
 

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re
Merci Roger:) pour ces précisions.
Concernant l'élaboration des motifs, je vais laisser décanter un peu et regarderai cela à tête reposée lorsque j'aurai peu de temps devant moi.
Il faudra tout de même que je me penche sur les différentes syntaxes utilisées à l'époque pour écrire ces dates :
était-ce uniquement
9 Pluviôse An II
ou 9 Pluviôse de l'An II, 9 Pluviôse de l'année II ou 9 Pluviôse An 2 ou autre chose étaient également admis et peuvent être donc retrouvées dans les archives ?

@Jean-Noël:) et Jean-Marie:) mes compagnons RegExpiens : rien ne vous empêche de creuser également la question de votre côté si vous avez un moment:).
A+
 

Staple1600

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Bonjour le fil

N'apporte rien au fil (comme dirait JCGL ;) )
...
@Jean-Noël:) et Jean-Marie:) mes compagnons RegExpiens : rien ne vous empêche de creuser également la question de votre côté si vous avez un moment:).
A+
Comme je t'ai l'ai dit en MP, j'ai rangé la pelle à creuser le pattern, mais je repasse néanmoins pour saluer ROGER2327 et dire le ravissement retrouvé de le lire de nouveau sur XLD.

Toujours aussi impressionnant ! :)

PS: Je repasserai dans ce fil en février (en espérant alimenter le schimblick regexpien ;) )
 

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Bonjour,
suite à la fonction proposée par Roger, ci-joint une 1ère proposition d'extraction de dates du calendrier Grégorien ou Républicain retranscrites en date Grégorienne au format jj/mm/aaaa.
En l'état, les syntaxes telles que
le 2 vendémiaire de l'An 10
ou
le 2 vendémiaire Année 10
par exemple ne sont pas traitées.
J'attends de savoir si cela est utile (syntaxe utilisée à l'époque et que l'on peut retrouver dans les archives) ou pas.

Au niveau de la syntaxe des jours complémentaires, seules les syntaxes comportant "Sanculotide" et ses dérivés sont traités (même attente que pour les syntaxes en vigueur pour les dates).

@Roger :
Faites-moi part de toute autre correction que vous souhaitez !
autre correction à apporter : 4 Niv. An 1 renvoie date non valide tandis que 4 Niv An 1 renvoie le 24/12/1792 (pas de problème de ce type avec les autres mois sur ce type de format).

Merci de m'apporter vos éventuelles lumières concernant les question de syntaxe soulevées ci-dessus, ainsi que vos retours de test.

Fichier enregistré au format .xls

A+

Edit : fichier retiré (plantage)
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re
Ci-joint le fichier à tester.
Cf. les informations placés dans mon message ci-dessus.
A+
 

Pièces jointes

  • Extraction_date_Roger2327_David84.xls
    168.5 KB · Affichages: 121

ROGER2327

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Bonjour david84 et tous les autres,


Le remplacement de la fonction FDr$ par celle-là :
VB:
Function FDr$(r$)
Dim s, d As Byte
    s = Split(WorksheetFunction.Trim(Replace(Replace(Replace(LCase(r), "pre", "1"), " an ", " "), "ô", "o")) & " p")
    If InStr(" le du au ", s(0)) Then d = 1
    If Not IsNumeric(s(2 + d)) Then
        If Left$(s(2 + d), 1) = "-" Then s(2 + d) = Right$(s(2 + d), Len(s(2 + d)) - 1): s(3 + d) = "av."
        s(2 + d) = ARABE(s(2 + d))
    End If
    FDr = Val(s(0 + d)) & "," & InStr("xxxvendbrumfrimnivopluvventgermflorpraimesstherfrucsanc", Replace(LCase(Left$(s(1 + d), 4)), ".", "")) / 4 & "," & s(2 + d) * IIf(s(3 + d) = "av.", -1, 1)
End Function
devrait répondre à quelques unes de vos préoccupations.​


ROGER2327
#5392


Dimanche 22 Décervelage 139 (Ostension du Bâton à physique - fête Suprême Seconde)
29 Nivôse An CCXX, 5,8252h - mercure
2012-W03-4T13:58:50Z
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re Roger,
cette modification règle certaines parties telles que
(modification du motif en conséquence), mais en modifie d'autres.
Ainsi
2e sanculottide An III
3e sanculottide An III
4e sanculottide An III
ne sont plus reconnues comme dates valides.

Vous pouvez tester sur le fichier ci-joint comportant votre dernière proposition (tests sur les onglets "DateGreg" et "RegExp" afin de savoir si c'est votre fonction où le motif qu'il faut retoucher).

De mon côté, je fais quelques recherches pour savoir quelles sont les syntaxes à traiter en plus de celles existantes (4 Niv. de l'An 1 ? 4 Niv. Année 1 ?).

Si vous avez un avis à ce sujet, n'hésitez-pas à me le faire savoir.

Je pense que, le cas échéant, cette partie serait traitée par le motif afin de soumettre à votre fonction une date syntaxiquement homogène (1 Vendémiaire An I ou 1 Vendémiaire An 1), soit le jour (1) suivi du mois (vend, vend. ou vendémiaire) suivi de "An" suivi du nombre de l'année (1).

Mais pour cela, il nous faut en savoir plus sur la manière dont ces dates pouvaient être écrites.
Cette question se pose bien entendu également pour les jours complémentaires.

A+
 

Pièces jointes

  • Extraction_date_Roger2327_David84 (2).xls
    173.5 KB · Affichages: 123
  • Extraction_date_Roger2327_David84 (2).xls
    173.5 KB · Affichages: 125
  • Extraction_date_Roger2327_David84 (2).xls
    173.5 KB · Affichages: 122
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re...


Dans la dernière ligne,
Code:
Val(s(0 + d) & "-1")
est erroné ! Il faut écrire
Code:
Val(s(0 + d))
Excusez-moi pour cette étourderie !​


ROGER2327
#5394


Dimanche 22 Décervelage 139 (Ostension du Bâton à physique - fête Suprême Seconde)
29 Nivôse An CCXX, 6,6875h - mercure
2012-W03-4T16:03:00Z
 

ROGER2327

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Suite...


La correction fonctionne apparemment dans votre classeur.


ROGER2327
#5395


Dimanche 22 Décervelage 139 (Ostension du Bâton à physique - fête Suprême Seconde)
29 Nivôse An CCXX, 6,8102h - mercure
2012-W03-4T16:20:40Z
 

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re
Excusez-moi pour cette étourderie !
Mais je vous en prie mon cher Roger:) !
Soyez une fois encore remercié de votre précieuse collaboration.

Ci-joint fichier actualisé pour ceux et celles qui veulent tester.

Je continue de regarder au sujet des questions de syntaxes relatées dans mon précédent message...je crois que nous n'avons pas fini de nous amuser !

J'attends d'obtenir certaines information avant de faire le point sur les syntaxes utilisées à l'époque (celles que l'on peut retrouver dans les registres communaux, notariés, etc.).

Après, il sera tant de voir jusqu'où l'on peut (veut) pousser le bouchon et décider du mode de traitement, à savoir via la fonction ou via le motif d'expression rationnelle, en sachant tout de même qu'une modification de la fonction aura la plupart de temps une répercussion sur le motif (ce qui n'est pas gênant), alors que l'inverse n'est pas obligatoire.

En fait, votre fonction étant indépendante et pouvant donc être utilisée hors de ce contexte, ce sera à vous de me dire s'il vous paraît intéressant qu'elle intègre telle donnée dans sa procédure ou pas.
Je me calerai par rapport à vos choix.

Ceci dit, je pense néanmoins que la procédure actuelle peut nous servir de base aux évolutions futures auxquelles nous serions amenés à procéder.
A+

Edit :
La correction fonctionne apparemment dans votre classeur
Je vous le confirme.
 

Pièces jointes

  • Extraction_date_Roger2327_David84 (2).xls
    174 KB · Affichages: 146
  • Extraction_date_Roger2327_David84 (2).xls
    174 KB · Affichages: 146
  • Extraction_date_Roger2327_David84 (2).xls
    174 KB · Affichages: 139

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Bonsoir,

Ci-joint nouvelle proposition à tester avec quelques nouveautés :
Dates Grégoriennes : prise en compte de la syntaxe 7bre, 8bre, 9bre et 10bre pour les mois de septembre à décembre (syntaxe longtemps utilisée et que l'on peut retrouver dans certains registres).

Dates Républicaines :
- Traitement de syntaxes telles que 1 Vendémiaire de l'An II, ou Année II ou de l'Année II, suivi ou pas par "de la République"
- Prise en compte de la syntaxe "jour complémentaire" pour désigner les sanculottides.

Cf. fichier test.
Merci de me signaler les éventuelles erreurs.
A+
 

Pièces jointes

  • Extraction_date_Roger2327_David84 (3).xls
    237 KB · Affichages: 94

ROGER2327

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re...


Beau boulot !
Je dépose une mise à jour de ma contribution sans RegExp.​


ROGER2327
#5398


Mardi 24 Décervelage 139 (Saint Weidman, patriarche - fête Suprême Quarte)
1er Pluviôse An CCXX, 0,9464h - lauréole
2012-W03-6T02:16:17Z
 

Pièces jointes

  • DGREG7.xlsm
    74.2 KB · Affichages: 158

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Re

Merci Roger pour cette nouvelle contribution qui permettra à terme d'alléger la partie RegExp (ce n'est pas la peine de traiter 2 fois du même cas et ce qui est traité par votre fonction n'a pas besoin de l'être par le RegExp, mais je ferai les ajustement lorsque tout sera calé).

Je vois que la syntaxe "jour c"(omplémentaire) est maintenant traitée ainsi que "de l'An...".
Une remarque toutefois :les syntaxes telles que 9 Pluviôse l'An II, 9 Pluviôse Année II ou 9 Pluviôse de l'Année II faussent le résultat de votre fonction.
Dans le cadre de l'extraction des dates, elles sont prises en charge par la partie RegExp (donc pas de problème) mais je préfère vous le signaler.

J'ai également testé vos déclarations minimales et je calerai à terme le RegExp en conséquence.
D'après les quelques tests effectués de mon côté :
- le N suffit à Nivôse
- le T suffit à Thermidor
- le S suffit à Sanculottide
- le jour c suffit à jour complémentaire
et ce, avec ou sans "."

Concernant les autres syntaxes à traiter, je vois également des dates enregistrées de la façon suivante :
2 Vendémiaire 1793
, surtout au début de l'instauration du calendrier Républicain ou la syntaxe classique n'était pas partout adoptée.
Cette syntaxe ne comporte pas "AN" ou ses dérivés et la date n'est pas en chiffres Romains.

Voyez le cas échéant s'il vous est possible d'inclure ce type de syntaxe au traitement de votre fonction.
Merci encore de votre précieuse collaboration à ce projet.
A+
Edit : petit bug détecté dans mon dernier fichier : fichier actualisé dans ce message
 

Pièces jointes

  • Extraction_date_Roger2327_David84_21_01.xls
    236.5 KB · Affichages: 98
Dernière édition:

Odesta

XLDnaute Impliqué
Re : Expressions régulières - Patterns pour RegExp

Hors sujet sur l'actu de se poste, mais je tennais à dire encore merci pour JPN :
j'ai pu faire un petit programme de recherche de mots pour mon papa, modeste créateur de mots croisés.
Le programme, à partir d'un dictionnaire péche sur la toile, permet de sortir tous les mots correpondant à une recherche comportant des '*' (pour n caractères) et des '?' (pour un caractère) Exemple "A?br*".

Dès que j'y pense je metterais le pg sur le site (il est très simple) ainsi que le dictionnaire (malheureusement, j'ai oublié le nom de la source)
 

david84

XLDnaute Barbatruc
Re : Expressions régulières - Patterns pour RegExp

Bonsoir,
ci-joint fichier actualisé prenant en compte la syntaxe
2 Vendémiaire 1793
suite à une légère modification apportée à la macro FDr de Roger2327 :

Code:
Function FDr$(r$)
Dim s, d As Byte, i As Byte, Test As Boolean
    r = Replace(LCase(r), "année", "an")
    If InStr(1, r, "an", vbBinaryCompare) > 0 Then Test = True
    s = Split(WorksheetFunction.Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(r, " jour ", " "), "pr", "1"), "de l'", ""), " an ", " "), "ô", "o"), "ème ", " ", , , vbBinaryCompare), "avant", "av.")) & " p") 'test à épurer
    If InStr(" le du au ", s(0)) Then d = 1
    If IsNumeric(s(2)) And Test = False Then s(2) = s(2) - 1792: If s(2) = 0 Then s(2) = 1
    If Not IsNumeric(s(2 + d)) Then
        If Left$(s(2 + d), 1) = "-" Then s(2 + d) = Right$(s(2 + d), Len(s(2 + d)) - 1): s(3 + d) = "av."
        s(2 + d) = ARABE(s(2 + d))
    End If
    FDr = Val(s(0 + d)) & "," & WorksheetFunction.Min(13, InStr("xxxx vend brum frim nivo pluv vent germ flor 1air mess ther fruc sanc jour comp", " " & Replace(LCase(Left$(s(1 + d), 4)), ".", "")) / 5) & "," & s(2 + d) * IIf(s(3 + d) = "av.", -1, 1)
End Function

La fonction ExtraireDate a été allégée par endroit suite aux dernières modifications apportées par Roger2327.

Merci de me signaler les bugs que vous seriez amenés à mettre en évidence.

@Roger2327 : je me suis permis de modifier légèrement votre fonction FDr$. J'ai fait quelques tests de mon côté et cela semble fonctionner (cf. fichier) mais peut-être relèverez-vous de votre côté des incohérences.

Cependant, si vous préférez que la syntaxe
2 Vendémiaire 1793
soit gérée par la partie RegExp et non par la fonction FDr$, cela est tout à fait possible.

Je vous remercie une fois encore pour votre précieuse collaboration.

A+
 

Pièces jointes

  • Extraction_date_Roger2327_David84_XLD.xls
    258.5 KB · Affichages: 93

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 656
dernier inscrit
VNVT