Correspondre à un modèle qu'une seule fois

J'ai une chaîne

foo-bar-bat.bla

Je souhaite correspondre qu'à foo

Mon imparfait modèle correspond à la fois à foo et bar

\w+(?=-.*\.bla)

Comment dois-je jeter bar? Ou peut-être même mieux, comment pourrais-je arrêter de correspondance des trucs après foo?

  • Vous pouvez arrêter de correspondance après le premier match (soit avec Matcher ou replaceFirst), ou dois-je raté quelque chose?
  • Mon commentaire était plus tôt à propos de Java, mais je pense qu'il y a l'équivalent de construire dans d'autres langues, pour s'arrêter au premier match. Le seul cas que mon commentaire ne s'applique pas lorsque vous utilisez un certain genre d'outil. Mais il y a toujours une astuce pour contourner ce problème, si vous donnez plus d'exemple et de contexte.
  • Quelle est la relation entre les foo et bar? Ne bar doivent être présents?
  • Combien votre chaîne d'entrée varient? Est-il toujours les trois caractères, un tiret, trois caractères, un tiret, trois caractères, le point, 3 caractères?
  • Oui, il va toujours avoir le même format. J'ai essayé de tester Hugo regex (pythonregex.com) en ajoutant un accent circonflexe: ^\w+(?=-.*\.bla) Semble comme ça devrait fonctionner, mais dans pythonregex.com il n'a donné aucun résultat. J'ai utilisé le test suivant des données: asf.asf-asf.bla bla-bla-boo.bla foo-bar-bat.bla Sans le signe le test de produit: >>> regex.findall(string) [u'asf', u'bla', u'bla', u'foo', u'bar']
InformationsquelleAutor wawiwa | 2013-03-13