Bonjour à vousbon première chose cette regexp n'est pas destinée a PHP mais a python, cependant étant donné que ce sous forum est spécialisé dans les regexp et qu'après tout entre les regexp python et php la différence est plus que minime je me suis dis que je pouvais me permettre de poser ma question ici.
Voila mon problème est je pense simple, je fais un script comptant les occurences d'un mot / groupe de mot passé en parametre dans une chaine de caractère (qui peut très bien faire 12 000 ligne avec caractère de formatage caractère unicode et toute autre saleté du genre). le souci est que je dois par exemple etre capable de matcher "je dis non" dans "et la, je dis: non" ou "je lui dis 'non'" ou encore "moi je dis ___non!!!" bref vous voyez le genre
Pour ça après moult essai j'en viens a la conclusion que le plus simple serait de retirer l'integralité des caractère speciaux (!#& \ ' - et j'en passe mais aussi les caractere d'echappement \n les tabulations \t etc..) donc tout ce qui n'est pas alphanumerique SAUF deux exceptio a savoir les apostrophes et les tirets qui sont située a l'interieur d'un mot et donc qui font partie intégrante de ce mot tel que o'maley ou arc-en-ciel
seulement voila ça fait un moment que je planche sans succès
mon dernier essai marchant a moitié était cet immondice:
""" \s+
| (\'\')+
| (?=[a-z0-9])([^a-z0-9\s\']+ | \'+[^a-z0-9\'] | [^a-z0-9]+$)
| ([^a-z0-9\s\']+ | [^a-z0-9\']\'+ | ^[^a-z0-9])(?=[a-z0-9])
| [\b^] [^a-z0-9]+ [\b$]
"""
bref et sur le papier j'en suis arrivé a ceci :
[^(\A?[a-z0-9]+([\'-][a-z0-9]+)?\Z?)]
seulement la regexp ne veut même pas être compilée j'ai le droit a une erreur : nothing to repeat j'ai beau la tourner dans tous les sens je vois pas ce qui cloche
juste au cas ou ça ne soit pas pareil en PHP, en python \A signifie un debut de chaine, et \Z une fin de chaine en gros c'est ^ et $ mais comme j'ai toujours peur qu'ils soient mal interpreté ces deux la...
Je vous remercie par avance![]()
Partager