2012-10-01 21 views
16

Ya entiendo que .* significa cero o más de cualquier carácter, pero ¿Podría alguien explicar cómo .* en el siguiente trabajo y lo que correspondería?How. * (Dot star) funciona?

.*([a-m/]*).* 

.*([a-m/]+).* 

.*?([a-m/]*).* 
+1

En Regex, '.' hace referencia a cualquier carácter, ya sea un número, un carácter de apéndice o cualquier otro carácter especial. '*' significa cero o más veces. – asgs

+2

Es lo suficientemente simple, cualquier símbolo, presente cero o más veces, pero hay una * tonelada * de matices debajo de eso. Además, es un concepto extremadamente central en expresiones regulares. Salga ahora y lea un resumen de las expresiones regulares. Vas a llegar más lejos, más rápido, de esa manera. –

Respuesta

6

Cada caso es diferente:

.*([a-m/]*).*

La primera .* probablemente coincidirá con la cadena entera, porque [a-m/] no está obligado a estar presente, y el primer * es codicioso y que ocurra primero.

.*([a-m/]+).*

La primera .* coincidirá con toda la cadena hasta el último carácter que coincide con [a-m/] ya que sólo se requiere uno, y el primer * es codicioso y que ocurra primero.

.*?([a-m/]*).*

La primera .*? coincidirá con la cadena hasta el primer carácter que coincide con [a-m/], porque *? no es codicioso, entonces [a-m/]+ coincidirá con todo lo que pueda, porque + es codicioso, y luego la última .* coincidirá con el resto de la cadena.

+0

¡Bien hecho! +1 – XIVSolutions

10

el punto significa cualquier cosa puede ir aquí y la estrella significa al menos 0 veces por lo .* acepta cualquier secuencia de caracteres, incluyendo una cadena vacía.

+2

¿Cómo lo hiciste? Usted respondió a 'no es una pregunta real'. –

+0

@Thereisnothingwecando: "cerrado como una pregunta no real ... 2 de octubre de 12 a 9:38". Ionut respondió eariler, (cuando todavía era una pregunta real :)). –

4

. * Significa "cualquier carácter, cualquier cantidad de repeticiones".

8

La función de. * En los ejemplos es asegurarse de que la expresión contenedora se pueda rodear con cualquier cosa (o nada). El punto representa un carácter arbitrario, y el asterisco dice que el carácter anterior puede repetirse un número arbitrario de veces (o no repetirse).