2010-09-14 7 views
10

que tienen una expresión regular que tiene este aspecto:? Se puede hacer en expresiones regulares

/^(?:\w+\s)*(\w+)$*/ 

¿Cuál es el ?:?

+1

Está ahí para confundir a las personas. – JAL

+1

posible duplicado de [¿Grupo no capturado? (?:)] (http://stackoverflow.com/questions/3512471/non-capturing-group) – HamZa

Respuesta

17

Indica que el subpatrón es un subpatrón de no captura. Eso significa que cualquier cosa que coincida con (?:\w+\s), aunque esté encerrado por (), no aparecerá en la lista de coincidencias, solo (\w+) lo hará.

Todavía está buscando un patrón específico (en este caso, un solo carácter en blanco después de al menos una palabra), pero no le importa lo que realmente coincide.

+1

+1 más información: http://www.regular-expressions.info/brackets.html –

2

Significa solo grupo pero no recuerdo la parte agrupada.

Por defecto () le dice al motor de expresiones regulares que recuerde la parte de la cadena que coincide con el patrón que hay entre ellas. Pero a veces sólo queremos grupo de un patrón sin activar la memoria de expresiones regulares, para ello utilizamos (?: a su lugar de (

3

Además de las excelentes respuestas dadas, su utilidad también para simplificar el código necesario para extraer los grupos de los resultados coincidentes. Por ejemplo, su grupo (\ w +) se conoce como grupo 1 sin tener que preocuparse por ningún grupo que aparezca antes. Esto puede mejorar el mantenimiento de su código.

Cuestiones relacionadas