2010-04-05 2 views
1

J'ai besoin de tokenize certaines chaînes qui seront divisées de selon les opérateurs comme = and !=. J'ai réussi à utiliser regex jusqu'à ce que la chaîne a != opérateur. Dans mon cas, la chaîne a été séparée en deux parties, ce qui est attendu, mais ! marque est dans le côté gauche, même si elle fait partie de l'opérateur donné. Par conséquent, je crois que regex ne convient pas et je veux bénéficier de lex. Comme je n'ai pas assez de connaissances et d'expérience avec lex, je ne suis pas sûr que cela corresponde ou non à mon travail. Fondamentalement, j'essaye de faire remplacer le côté droit des opérateurs avec les valeurs réelles d'autres données. Est-ce que vous pensez que ça peut être utile pour mon cas?distinguer une chaîne avec flex

Merci.

Répondre

1

Devriez-vous utiliser lex? Cela dépend de la complexité de votre langage. C'est un outil très puissant, qui vaut la peine d'être compris (surtout avec yacc, ou en Java, vous pouvez utiliser antlr ou javacc).

public String[] split(String regex) prend une regex, pas seulement une chaîne. Vous pouvez utiliser la regex "!? =", Qui signifie zéro ou un ! suivi de =. Mais le problème avec l'utilisation de split est qu'il ne vous dira pas ce que le délimiteur réel était. Avec les petites informations que nous avons sur votre application, je serais tenté d'utiliser des expressions régulières. Il y a beaucoup d'experts ici sur stackoverflow pour vous aider. Un bon endroit pour commencer est le Java regex tutorial.

(Merci à Falle1234 pour ramasser mon erreur -. Maintenant corrigé) "! ="

+1

Le regex devrait être au lieu de "+ =!". ? est l'indicateur "zéro ou un" et non +, ce qui indique un ou plusieurs. – Falle1234

Questions connexes