Question

Le livre de texte nous apprend à écrire des expressions régulières en utilisant le symbole de (ε) epsilon, mais comment puis-je traduire ce symbole directement au code sans avoir à mon expression complètement retravailler régulièrement?

Par exemple, comment pourrais-je écrire ce regex qui retiendrait toutes les chaînes de minuscules qui soit commencent ou se terminent dans a (ou les deux).

Pas 100% sûr que ce soit correct, mais ...

((a | epsilon) [a-z] *a) | (A [a-z] * (a | epsilon))

Ainsi, certaines chaînes qui doivent correspondre à inclure:

a //single "a" starts or ends with "a"

aa //starts and ends with "a"

ab //starts with "a"

ba //ends with "a"

aba //starts and ends with "a"

aaaaaaaa //starts and ends with "a"

abbbbbbb //starts with "a"

bbbbbbba //ends with "a"

abbbbbba //starts and ends with "a"

asdfhgdu //starts with "a"

onoineca //ends with "a"

ahnrtyna //starts and ends with "a"

Je ne change quoi epsilon pour le symbole correct, je ne veux pas modifier une partie du reste de l'expression. Aussi je veux être clair, je ne suis pas vérifiais en fait le symbole epsilon, je veux avoir le choix d'un personnage ou rien (bien rien ... epsilon).

Est-ce qu'un tel symbole exist?

Est-ce que je veux possible?

Était-ce utile?

La solution

il suffit d'omettre l'e, car il désigne la chaîne vide:

([1-9]|)[0-9]*

Il y a aussi un raccourci pour ce cas particulier:

([1-9]?)[0-9]*

Les moyens de ? zéro ou un occurrences du jeton précédent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top