Pregunta

El libro de texto nos enseña a escribir expresiones regulares usando el símbolo (ε) épsilon, pero ¿cómo puedo traducir ese símbolo directamente al código sin tener que rehacer por completo mi expresión regular?

Por ejemplo, ¿cómo iba a escribir esta expresión regular que coger todas las cuerdas minúsculas que, o bien comienzan o terminan en a (o ambos).

No es 100% seguro de que esto es correcto, pero ...

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

Por lo que algunas cadenas que debe coincidir incluir:

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"

Yo sólo lo que a cambio de epsilon el símbolo correcto, no quiero modificar cualquier parte del resto de la expresión. También quiero ser claro, no estoy realmente revisando el símbolo épsilon, quiero tener la opción de un personaje o nada (bueno, no nada ... épsilon).

¿Tiene un símbolo existen tales?

¿Es posible lo que quiero?

¿Fue útil?

Solución

Sólo omitir la e, ya que denota la cadena vacía:

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

También hay un acceso directo para este caso en particular:

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

Los medios ? cero o uno ocurrencias de la anterior token.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top