price:(?:(?:\d+)?(?:\.)?\d+|min)-?(?:(?:\d+)?(?:\.)?\d+|max)?
Cette expression régulière correspond correctement aux exemples suivants.Comment continuer une correspondance dans Regex
price:1.00-342
price:.1-23
price:4
price:min-900.00
price:.10-.50
price:45-100
price:453.23-231231
price:min-max
Maintenant je veux l'améliorer pour correspondre à ces cas.
price:4.45-8.00;10.45-14.50
price:1.00-max;3-12;23.34-12.19
price:1.00-2.50;min-12;23.34-max
Actuellement, la correspondance s'arrête au point virgule. Comment puis-je faire répéter l'expression régulière à travers les séparateurs de deux points?
Solution finale:
price:(((\d*\.)?\d+|min)-?((\d*\.)?\d+|max)?;?)+
Nous avons besoin d'un peu plus de contexte à ce que vous * ne * voulez faire correspondre. L'expression rationnelle '^. * $' Correspondra à tous les exemples que vous avez donnés. En général, cependant, vous pouvez ajouter ';?', Créer un groupe non-capturant autour de tout après "price:" et ajouter '*' – Jay
Votre expression régulière correspond également à "price: minmax" et "price: 1.2.3" . Est-ce vraiment ce que tu veux? –