2
votes

Regex pour capturer: mot {word} mot

J'essaie de capturer: mot {word} mot.

J'ai la regex suivante: \S*\s\{.*?\}\S[^{\s *

Il capture réellement ce modèle, mais il capture également le mot {word}. Voir: https://regex101.com/r/yI64KQ/6

Comment le corriger pour ne capturer que: mot {word} mot?

Merci d'avance à toutes les personnes qui aident.


3 commentaires

Est-ce que "[^ {s]" est censé être "[^ {\ s]" (c'est-à-dire un espace blanc, pas un littéral "s" )


Désolé, je le répare. En fait, un autre utilisateur modifie parce que j'ai oublié `` regex. C'était pire ... LOL


La plage A-z correspond à plus de caractères que seulement des lettres. Je vous suggère de jeter un œil à une table ASCII.


3 Réponses :


1
votes

Si je comprends bien le problème, nous souhaitons capturer les trois mots, que nous pouvons commencer par une expression similaire à:

^(.+?)(\s+)?({(.*)?\})?(\s+)?(.+?)?$

Démo

entrez la description de l'image ici


1 commentaires

Merci @Emma pour votre aide. Je ne savais pas comment exprimer ce dont j'avais besoin. Mais votre exemple m'a permis d'en apprendre un peu plus sur les regex. Merci beaucoup.



2
votes

5 commentaires

Une autre question: regex101.com/r/yI64KQ/8 . Est-il possible de capturer test2 {test} test3 également?


Je ne peux penser qu'à la manière suivante: regex101.com/r/yI64KQ/10 Donc vous attrapez tout en un et créez une fonction avec ce que vous pouvez démonter.


Merci @Norbert Incze, je vais le faire. J'ai un autre problème. Il s'agit de lignes de rupture. Pouvez-vous aider s'il vous plaît? Regardez: regex101.com/r/yI64KQ/11 (j'ai changé \ w en [A- zÀ-ú] parce que ma langue a beaucoup de mots accentués, donc \ w ne fonctionne pas correctement)


regex101.com/r/yI64KQ/16 , vous pouvez également ajouter vos caractères spéciaux, comme j'ai ajouté le mien.


Merci mec! Vous êtes un dur à cuire! haha Vous m'aidez dans ces autres questions: stackoverflow.com/questions/56495115/... . Je vous remercie! Merci beaucoup! Vous sauvez ma journée!



1
votes

< [RESOLVED

Grâce à Norbert Incze , l'expression régulière finale est: ([A-zÀ- ú] + ([^ \ S \ n] + \ {[^}] * \} [^ \ S \ n] + [A-zÀ-ú] +) +)

Cela a parfaitement fonctionné! Merci à tous ceux qui m'ont aidé.


0 commentaires