2011-02-19 5 views
1

J'ai besoin de ma regex C# pour ne trouver que des mots entiers, et je dois m'assurer que + -/*() délimite aussi les mots (je ne suis pas sûr que la dernière partie est déjà défini de cette façon.) Je trouve les expressions rationnelles très confuses et voudrais de l'aide sur le sujet. Actuellement, mon expression rationnelle estCaractères de mot de réglage Regex et mot exact correspondant

public Regex codeFunctions = new Regex("draw_line|draw_rectangle|draw_circle"); 

Merci! :)

Répondre

3

Try

public Regex codeFunctions = new Regex(@"\b(draw_line|draw_rectangle|draw_circle)\b"); 

Les \b moyens correspondent à une limite de mot, à savoir une transition d'un caractère non-mot à un caractère de mot (ou vice versa).

Les caractères alphanumériques comprennent les caractères alphabétiques, les chiffres et le symbole de soulignement. Les caractères non-mot comprennent tout le reste, y compris +-/*(), donc cela devrait fonctionner correctement pour vous. Pour plus de détails, voir Regex Class documentation pour plus de détails.

Le @ au début de la chaîne rend la chaîne verbatim string, sinon vous devez taper deux antislashs pour créer une barre oblique inverse.

+0

Cela ne semble correspondre à rien – pajm

+0

Pouvez-vous fournir un exemple de code qui montre le problème? Quelle chaîne es-tu en train de faire correspondre? – Mikel

+0

Désolé, j'ai oublié le '@' au début de la chaîne. Peux-tu réessayer? – Mikel

0

Voulez-vous faire correspondre mots, ou juste les mots énumérés ci-dessus? Pour correspondre à un mot arbitraire, remplacer ce pour le bit qui crée l'objet Regex:

new Regex (@"\b(\w+)\b"); 

À l'avenir, si vous voulez plus de caractères à traiter comme des espaces (par exemple, souligne), je recommande cordes. Les remplacer par un caractère espace. Il peut y avoir une manière intelligente d'obtenir le même effet avec des expressions régulières, mais personnellement je pense que ce serait trop intelligent. La version String.Replace est évidente.

Aussi, je ne peux pas m'empêcher de vous recommander de lire des expressions régulières. Oui, ils ressemblent au bruit de la ligne jusqu'à ce que vous vous y habituiez, mais une fois que vous le faites, ils sont pratiques et il y a beaucoup de bonnes ressources disponibles pour vous aider.

Questions connexes