2017-03-11 3 views
-2

Je voudrais demander s'il est possible de représenter "?" quantifier en utilisant uniquement des quantificateurs d'union (+) et de fermeture (*).Dans l'expression régulière, comment faire une alternative à "?" faire correspondre en utilisant seulement les quantificateurs union (+) et closure (*)?

Par exemple, "a +" peut également être représenté par "a (a *)". Comment pouvez-vous représenter "a?" avec seulement "*" s et "+" s?

Merci :)

+0

Vous pouvez utiliser {0,1} ce qui signifie correspondre à au moins 0 occurrences du caractère précédent ou au plus 1 – FrenchMajesty

+0

Ce n'est pas possible avec seulement '+' et '*'. Vous aurez besoin d'alternance ('(a |)') ou de groupes de capture et de lookarounds ('(a (?! \ 2)()) *') ou peut-être d'autres outils. –

+0

Merci pour la réponse. J'ai soulevé cette question parce que je suis coincé dans l'une des questions de notre examen simulé en automates. Nous ne pouvons utiliser que les expressions union (+), closure (*) et concaténation pour décrire chaque langue. –

Répondre

0

a? peut être représenté comme + ε et, comme mentionné, a+ peuvent être représentés comme aa*.

+0

Qu'est-ce que ε dans "a + ε"? Cela ne ressemble pas à une expression régulière. –