2013-02-24 2 views
0

J'essayais d'écrire un motif qui ne contient pas de chaîne binaire (supposons 101). Je sais que de telles expressions ne peuvent pas être écrites en utilisant Regular Expression en considérant http://en.wikipedia.org/wiki/Regular_language.Construction d'un motif qui ne contient pas de chaîne binaire

J'ai essayé d'écrire le modèle pour le problème ci-dessus en utilisant Regular Expression et il semble que cela fonctionne.

\b(?!101)\w+\b 

Ce que je voulais demander est que peut-on écrire une expression régulière pour mon problème et pourquoi? Et si oui, alors mon expression régulière est-elle correcte?

+1

'Veuillez également inclure une étiquette spécifiant le langage de programmation ou l'outil que vous utilisez.' (à partir de la description de la balise [regex] ') –

+0

J'utilise un outil en ligne http://regexpal.com/ pour tester le' regex'. Bien que je ne l'emploie nulle part. –

+0

Regardez http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word – clapas

Répondre

0

Pour correspondre à une chaîne entière qui ne contient pas 101:

^(?!.*101).*$ 

look-ahead sont en effet un moyen facile de vérifier une condition sur une chaîne par expression régulière, mais votre regex correspondra uniquement des mots alphanumériques ne commencez pas par 101.

0

Vous avez écrit

Je sais que ces expressions ne peuvent pas être écrites à l'aide régulière Expression considérant http://en.wikipedia.org/wiki/Regular_language.

Dans cet article de Wikipedia, vous semblez avoir manqué le

Notez que les « expressions régulières » fonctionnalités fournies avec de nombreux langages de programmation sont complétées avec des caractéristiques qui les rendent capable de reconnaître les langues qui ne peut pas être exprimé par les expressions régulières formelles (telles que définies ci-dessous).

La construction d'anticipation négative est une telle caractéristique.

Questions connexes