regex [résolu]

regex [résolu] - Divers - Programmation

Marsh Posté le 12-10-2012 à 12:05:31    

Bonjour à tous,
je bute sur un problème simple avec une regex.  
Je veux extraire des chaînes comme "1ab", "1cd", "1ef", "2ab", "2cd", "2ef"..., soit un premier caractère pris parmi (1,2,3,...) suivi d'une série de caractères pris parmi (ab, cd, ef...).  
J'avais pensé à : ([1|2|3]ab|cd|ef) qui fonctionne avec 1ab mais pas avec 1ef par exemple. Où est mon erreur ?
 
Je ne peux pas utiliser \d,\w,\S car les caractères que j'utilise n'ont en fait rien à voir avec 1,2,3,... ou ab, cd, ef... Je n'ai présenté ci-dessus qu'une réduction de mon problème.
 
Merci de m'aider !


Message édité par suizokukan le 12-10-2012 à 14:32:50

---------------
rule #1 : trust the python
Reply

Marsh Posté le 12-10-2012 à 12:05:31   

Reply

Marsh Posté le 12-10-2012 à 12:07:28    

[123](ab|cd|ef)  ?


---------------

Reply

Marsh Posté le 12-10-2012 à 12:54:34    

Citation :

Je ne peux pas utiliser \d,\w,\S car les caractères que j'utilise n'ont en fait rien à voir avec 1,2,3,... ou ab, cd, ef...


Si tu
1) expliquais quels sont ces caractères
2) le langage ou cette regex est employé (car certains langages savent appliquer les propriétés unicodes pour leurs regex et d'autres pas)
On pourrait te répondre plus précisément.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-10-2012 à 14:11:01    

Merci à flo850 et à Gilou pour leurs répones :

 

> flo850 : ta regex permet d'avoir "ef" en résultat alors que ces deux lettres doivent être précédées d'un chiffre.
> Gilou : j'utilise Python et le module re. Je travaille sur les caractères de l'IPA (http://en.wikipedia.org/wiki/IPA).

 

A la place de (1,2,3,...) j'ai en fait : ᶢ|ᵇ|ᵈ|ʷ|ᵖ|ⁿ
A la place (ab,cd,ef,...) j'ai en fait : i|y|ɨ|ʉ|ɯ|u|ʏ|ɪ̈|ɪ|ʊ̈|ʊ|e̞|e|ø̞|ø|ɘ|ɵ|ɤ̞|ɤ|o̞|o|ə|ɛ|œ|ɜ|ɞ|ʌ|ɔ|æ|ɐ|a|ɶ|ä|ɑ|ɒ|ʩ|ʪ|ʫ|ʬ|ʭ|¡|ʍ|w|ɥ|ɧ|k͡p|ɡ|ɡ͡b|ŋ͡m|ʘ̃|ʘ|ǀ̃|ǀ|ʇ̃|ʇ|ǃ̬˞|ǃ˞|ǃǁ|!|ǃ̃˞|ǃ̃|ǃ|ʗ̃|ʗ|ǂ̬|ǂ̃|ǂ|ǁ̃|ǁ|ʖ̃|ʖ|‼̃|‼̬|‼|ɓ̥|ɓ|ɗ̥|ɗ|ʄ|ᶑ|ʛ|ť|m|ɱ|n|ɳ|ɲ|ŋ|ɴ|pʼ↓|pʼ|p|b|tʼ↓|tʼ|t|d|ʈʼ|ʈ|ɖ|cʼ|çʼ|ç|c|ɟ|kʼ|k|g|ƙ|ɠ|qʼ|q|ɢ̆|ɢ|ʡ̯|ʡ|ʔ|ɸʼ|ɸ|β|fʼ|f|v|θʼ|θ͇|θ̱|θ̠|θ|ð|sʼ|s|S|z|ʃʲ|ʃʼ|ʃ|ʒʲ|ʒ|ʂʼ|ʂ|ʐ|ɕʼ|ɕ|ʑ|ʝ|xʼ|x|ɣ˕|ɣ|χʼ|χ|ʁ̝|ʁ̞|ʁ|ħʼ|ħ|ʕ̝|ʕ̞|ʕ|ʜ|ʢ̞|ʢ̝|ʢ|h|ɦ|ʋ|ɹ̝̊|ɹ|ɻ|j|ɰ|ⱱ|ɾ|ɽ|ʙ|r|ʀ|ᴙ|ɬʼ|ɬ̢ʼ|ɬ̢|ɬ|ɮ|ʟ̆|ʟ̝̊|ʟ̝̊ʼ|ʟ̝|ʟ|l|ɭ˔|ɭ̆|ɭ|ʎ̯|ʎ̥˔ʼ|ʎ̥˔|ʎ˔|ʎ̝̥ʼ|ʎ̥ʼ|ʎ̥|ʎ|ɺ˞|ɺ̢|ɺ̠|ɺ||||ʼ||ʼ|ƥ|ƭ|ᵑǂ|ᵑǁ|ᵑʖ|ᵑǀ|ᵑʇ|ᵑ‼|ᵑǃ˞|ᵑǃ|ᵐʘ|ᵑʘ|ᵑʗ|ᶢǂ|ᶢǃˡ|ᶢǃ|ᶢ‼|ᶢʗ|ᶢʘ

 

Certains caractères sont simples ( v ) ou composés ( sʼ = s + ʼ ).

 

Je cherche à récupérer des chaînes comme ⁿxʼ ou ʷⁿβ.

 

Merci de votre aide !

Message cité 1 fois
Message édité par suizokukan le 12-10-2012 à 14:12:30

---------------
rule #1 : trust the python
Reply

Marsh Posté le 12-10-2012 à 14:17:42    

non, ma requete prends quelque chose quie st compsé de 1 OU 2 OU 3, suivi de ab OUcd OU EF


---------------

Reply

Marsh Posté le 12-10-2012 à 14:21:32    

flo850 > j'avoue ne pas comprendre; si je teste sur http://re-try.appspot.com/ avec text=1ef et regex=[123](ab|cd|ef) j'obtiens ef et non 1ef. Ai-je commis une erreur ?


Message édité par suizokukan le 12-10-2012 à 14:24:10

---------------
rule #1 : trust the python
Reply

Marsh Posté le 12-10-2012 à 14:25:16    

si tu récupères uniquement ce qui est matché par la parenthèse alors c'est normal.  
 
utilise ça : ([123](ab|cd|ef)) , ça devrait te donner 1ef et ef comme match, suivant le language que tu utilise pour le traiter, bien sûr


---------------

Reply

Marsh Posté le 12-10-2012 à 14:32:23    

> flo850 : exact, je l'avais remarqué; je croyais qu'il fallait n'avoir qu'un résultat (1ef) et non le double résultat (1ef,ef). Mais en effet tu réponds bien à ma question. Merci beaucoup !


---------------
rule #1 : trust the python
Reply

Marsh Posté le 12-10-2012 à 14:34:20    

:sol:


---------------

Reply

Marsh Posté le 12-10-2012 à 17:07:17    

suizokukan a écrit :

Merci à flo850 et à Gilou pour leurs répones :
 
> flo850 : ta regex permet d'avoir "ef" en résultat alors que ces deux lettres doivent être précédées d'un chiffre.
> Gilou : j'utilise Python et le module re. Je travaille sur les caractères de l'IPA (http://en.wikipedia.org/wiki/IPA).
 
A la place de (1,2,3,...) j'ai en fait : ᶢ|ᵇ|ᵈ|ʷ|ᵖ|ⁿ
A la place (ab,cd,ef,...) j'ai en fait : i|y|ɨ|ʉ|ɯ|u|ʏ|ɪ̈|ɪ|ʊ̈|ʊ|e̞|e|ø̞|ø|ɘ|ɵ|ɤ̞|ɤ|o̞|o|ə|ɛ|œ|ɜ|ɞ|ʌ|ɔ|æ|ɐ|a|ɶ|ä|ɑ|ɒ|ʩ|ʪ|ʫ|ʬ|ʭ|¡|ʍ|w|ɥ|ɧ|k͡p|ɡ|ɡ͡b|ŋ͡m|ʘ̃|ʘ|ǀ̃|ǀ|ʇ̃|ʇ|ǃ̬˞|ǃ˞|ǃǁ|!|ǃ̃˞|ǃ̃|ǃ|ʗ̃|ʗ|ǂ̬|ǂ̃|ǂ|ǁ̃|ǁ|ʖ̃|ʖ|‼̃|‼̬|‼|ɓ̥|ɓ|ɗ̥|ɗ|ʄ|ᶑ|ʛ|ť|m|ɱ|n|ɳ|ɲ|ŋ|ɴ|pʼ↓|pʼ|p|b|tʼ↓|tʼ|t|d|ʈʼ|ʈ|ɖ|cʼ|çʼ|ç|c|ɟ|kʼ|k|g|ƙ|ɠ|qʼ|q|ɢ̆|ɢ|ʡ̯|ʡ|ʔ|ɸʼ|ɸ|β|fʼ|f|v|θʼ|θ͇|θ̱|θ̠|θ|ð|sʼ|s|S|z|ʃʲ|ʃʼ|ʃ|ʒʲ|ʒ|ʂʼ|ʂ|ʐ|ɕʼ|ɕ|ʑ|ʝ|xʼ|x|ɣ˕|ɣ|χʼ|χ|ʁ̝|ʁ̞|ʁ|ħʼ|ħ|ʕ̝|ʕ̞|ʕ|ʜ|ʢ̞|ʢ̝|ʢ|h|ɦ|ʋ|ɹ̝̊|ɹ|ɻ|j|ɰ|ⱱ|ɾ|ɽ|ʙ|r|ʀ|ᴙ|ɬʼ|ɬ̢ʼ|ɬ̢|ɬ|ɮ|ʟ̆|ʟ̝̊|ʟ̝̊ʼ|ʟ̝|ʟ|l|ɭ˔|ɭ̆|ɭ|ʎ̯|ʎ̥˔ʼ|ʎ̥˔|ʎ˔|ʎ̝̥ʼ|ʎ̥ʼ|ʎ̥|ʎ|ɺ˞|ɺ̢|ɺ̠|ɺ||||ʼ||ʼ|ƥ|ƭ|ᵑǂ|ᵑǁ|ᵑʖ|ᵑǀ|ᵑʇ|ᵑ‼|ᵑǃ˞|ᵑǃ|ᵐʘ|ᵑʘ|ᵑʗ|ᶢǂ|ᶢǃˡ|ᶢǃ|ᶢ‼|ᶢʗ|ᶢʘ
 
Certains caractères sont simples ( v ) ou composés ( sʼ = s + ʼ ).
 
Je cherche à récupérer des chaînes comme ⁿxʼ ou ʷⁿβ.  
 
Merci de votre aide !

Regexp sur une langue a click :D
Je suis pas pythonneux mais perleur, et j'organiserais ça avec des variables en perl:
my $prearticulation = "ᶢ|ᵇ|ᵈ|ʷ|ᵖ|ⁿ";
my ....
my $clicks = "ᵑǀ|ᵑʇ|ᵑ‼|ᵑǃ˞|ᵑǃ|ᵐʘ|ᵑʘ|ᵑʗ|ᶢǂ|ᶢǃˡ|ᶢǃ|ᶢ‼|ᶢʗ|ᶢʘ";
my $regexp = "((?:$prearticulation)(?:...|$clicks)+)";
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-10-2012 à 17:07:17   

Reply

Marsh Posté le 12-10-2012 à 20:30:19    

Merci Gilou pour tes conseils : en fait cette longue série de phonèmes est extraite d'une base de données qui les définit un par un. Merci encore de m'avoir aidé !


---------------
rule #1 : trust the python
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed