teissierb
Messages postés2Date d'inscriptionvendredi 22 décembre 2023StatutMembreDernière intervention22 décembre 2023
-
22 déc. 2023 à 12:40
Whismeril
Messages postés19029Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 avril 2024
-
22 déc. 2023 à 19:14
Bonjour
J'ai besoin de "purifier" des phrases pour pouvoir les utiliser dans une application.
Merci beaucoup pour votre aide à construire le bon code :)
Je pense que le pattern est le suivant :
- 'n'importe quelle phrase' (0 ou 1 fois) {texte ici} (0-N fois)
exemple
AB CD {xxxxx}
ou AB CD {xxxxx,yyyy}
ou {xxxxx}
ou AB CD
ou AB CD {xxxxx} AB CD {xxxxx}
ou AB CD {xxxxx} {xxxxx} {xxxxx}
etc
- le bloc {texte ici} ressemble à {chiffre|du texte}.
Par exemple, le bloc {texte ici} ressemble à {chiffre|du texte} :
{1|xxxxxxxxx}
- le bloc "texte" peut (mais ce n'est pas obligatoire) contenir "default=xxx" à n'importe quel endroit du texte
ex : {3|abc=d,default=ma valeur} ou {2|a b c=d,default=ma valeur,another=valueThatIDontNeed} ou {1|default=ma valeur}
J'ai besoin d'isoler les parties suivantes et de les renvoyer dans une chaîne.
- le texte 'n'importe quelle phrase' (s'il existe)
- xxx du motif "default=xxx", conformément à l'explication ci-dessus.
Il n'est pas nécessaire de le faire en une seule fois, je peux le scripter dans des boucles en Python par exemple.
Voici quelques exemples
Exemple 1
Store bulk masses greater than {0|message=<specify mass="" value="">|filter=^(_)?MASS_VALUE.+|add space after=false.+}{1|message=<specify mass="" unit="">|filter=^(_)?P413_MASS_UNIT.+} at temperatures not exceeding {2|message=<specify temperature="" value="">|filter=^(_)?TEMP_VALUE_.+|add space after=false.+}{3|message=<specify temperature="" unit="">|filter=^(_)?P413_TEMP_UNIT_.+}
devrait donner:
Store bulk masses greater than at temperatures not exceeding
Exemple 2
Inhoud onder {0|message=<geschikt(e) vloeistof="" of="" gas="" specificeren="">|default=inert gas|filter=^(_)?P231_STORAGE_.+} gebruiken en bewaren. Tegen vocht beschermen.
Devait donner:
Inhoud onder inert gas gebruiken en bewaren. Tegen vocht beschermen.
Exemple 3
EN CAS DE CONTACT AVEC LA PEAU: Laver abondamment{0|message=<préciser un="" produit="" de="" nettoyage="">|default=à l’eau|filter=^(_)?P352_WASH_.+}. Appeler immédiatement {1|message=<préciser qui="" pourra="" émettre="" comme="" il="" convient="" n="" avis="" médical="" en="" cas="" d’urgence="">|default=un CENTRE ANTIPOISON ou un médecin|filter=^(_)?P310_EMERGENCY_.+}.
Devrait donner:
EN CAS DE CONTACT AVEC LA PEAU: Laver abondamment à l’eau . Appeler immédiatement un CENTRE ANTIPOISON ou un médecin
teissierb
Messages postés2Date d'inscriptionvendredi 22 décembre 2023StatutMembreDernière intervention22 décembre 2023 22 déc. 2023 à 12:43
Je voulais faire une boucle python pour isoler les 2 principaux types de blocs puis pour chaque bloque, s'il s'agit du bloc {xxx} isoler avec une autre regex le default=xxx
https://regexr.com/
regex: /((?![{}])\w| )*|(({.*?}))/g
Ca fonctionne à l'écran, mais pas sous python, le match n'est pas du tout le même