2009-08-06 23 views

Respuesta

114

Si desea hacer coincidir sólo las líneas que comienzan con el uso de parada

^stop 

Si desea hacer coincidir las líneas que comienzan con la palabra STOP seguido de un espacio

^stop\s 

O, si lo desea líneas de coincidencia que comienzan con la palabra stop pero seguidas por un espacio o cualquier otro carácter que no sea palabra que pueda usar (su sabor de expresión regular lo permite)

^stop\W 

Por otro lado, lo que sigue coincide con una palabra al comienzo de una cadena en la mayoría de los sabores de expresiones regulares (en estos sabores \ W Coincide con lo contrario de \ W)

^\w 

Si su sabor no tiene la \ w acceso directo, puede utilizar

^[a-zA-Z0-9]+ 

Tenga cuidado con que este segundo idioma sólo coincidirá letras y números, sin símbolo alguno.

consulte el manual de sabor expresión regular para saber lo que los accesos directos se permite y lo que es exactamente lo que coinciden (y cómo se tratan con Unicode.)

+14

+1 para generalizar su respuesta. Me encantaría ver más de esto en Stack Overflow. Lo convierte en un mejor recurso de aprendizaje en mi opinión. – Jim

6
/stop([a-zA-Z])+/ 

coincidirá con cualquier palabra stop (parada, se detuvo, parando, etc)

Sin embargo, si lo que desea para que coincida con "stop" en el inicio de una cadena

va a hacer: D

+2

Esto coincidirá con "no dejes de ir" –

+0

Releí la pregunta y cambié mi respuesta: D – Mez

+1

Esto no coincidirá con el stop123 o se detendrá ,. –

46

Prueba esto:

/^stop.*$/ 

Explicación:

  • / charachters delimitan la expresión regular (es decir, que no son parte de la expresión regular per se)
  • ^ significa partido en el principio de la línea
  • . seguido de * significa que coincide con cualquier carácter (.), Cualquier número de veces (*)
  • $ significa el final de la línea

Si desea hacer cumplir que dejar de ser seguido por un espacio en blanco, podría modificar la expresión regular de este modo:

/^stop\s+.*$/ 
  • \ s significa cualquier carácter de espacio en blanco
  • + f espués de la \ s significa que tiene que haber al menos un espacio en blanco después del término de parada

Nota: También hay que tener en cuenta que la expresión regular anterior requiere que la palabra parada será seguido por un espacio! Por lo que no se correspondería con una línea que sólo contiene: parada

+2

. * $ Es redundante. – Mez

+0

No todos los idiomas usan forwardslashes para delimitar expresiones regulares. – JAB

+1

@Cat Megex: que es precisamente por eso que agregué la explicación. Si su idioma utiliza algo más para delimitar la expresión regular, reemplace/con el carácter apropiado –

6

Si desea hacer coincidir cualquier cosa que empieza con "stop" incluyendo "dejar de ir", "alto" y "detener" el uso:

^stop 

Si desea hacer coincidir la palabra de terminación seguido por nada, como en "dejar de ir", "poner fin a esta", pero no "detenido" y no "detener" el uso:

^stop\W 
0

que había desaconsejar una aproximación simple de expresión regular ch a este problema. Hay demasiadas palabras que son subcadenas de otras palabras no relacionadas, y probablemente te enloquecerás intentando sobreaprender las soluciones más simples que ya se proporcionaron.

Querrá al menos un ingenuo algoritmo de derivación (pruebe el Lector Porter, hay código disponible y gratuito en la mayoría de los idiomas) para procesar el texto primero. Mantenga este texto procesado y el texto preprocesado en dos matrices de división de espacio separadas. Asegúrese de que cada carácter no alfabético también tenga su propio índice en esta matriz. Cualquier lista de palabras que estés filtrando, deséchalas también.

El siguiente paso sería encontrar los índices de la matriz que coincidan con su lista de palabras 'stop' derivadas. Quite los de la matriz no procesada y vuelva a unir espacios.

Esto es solo un poco más complicado, pero será un enfoque mucho más confiable. Si tiene alguna duda sobre el valor de un enfoque más orientado a PNL, es posible que desee hacer una investigación en clbuttic mistakes.

11

Si desea hacer coincidir nada después de una palabra detener una no sólo al comienzo de la línea que puede utilizar: \bstop.*\b - word followed by line

Word till the end of string

O si desea hacer coincidir la palabra de la cadena utilizar \bstop[a-zA-Z]* - only the words starting with stop

Only the words starting with stop

o el inicio de líneas con parada ^stop[a-zA-Z]* de la palabra única - first word only
Toda la línea ^stop.* - first line of the string only

Y si desea hacer coincidir cada cadena que comienza con parada incluyendo saltos de línea usar: /^stop.*/s - multiline string starting with stop

0

Si desea que la palabra comenzar con "stop ", puedes usar el siguiente patrón. "^ stop. *"

Esto coincidirá con las palabras que comienzan con la orden stop seguidas por cualquier cosa.

+1

Podría no solo usas '"^stop "'? –

+0

Depende. Hablando en términos de sintaxis java, podemos usar el objeto Pattern y Matcher para usar el método regex o de uso directo .matches() con el objeto String. Se diferencian en consecuencia como a continuación: 'code' ' línea String = "stopped"; '' patrón String = "^ stop"; '' Pattern r = Pattern.compile (patrón); '' Matcher m = r.matcher (línea); ' ' System.out.println (m.find()); // imprime verdadero' 'System.out.println (line.matches (pattern)); // imprime falso' –

+0

Esto coincide solo si la palabra al comienzo de la línea. Si las palabras que comienzan con "detener" están en el medio de la línea o al final, esta expresión regular no coincidirá. @StephenRauch si omite [a-z] *, no obtendrá palabras como "detenerse" en su totalidad. En el caso de "detener" obtendrá "detener" y "ping" faltaría. –

1

Me gusta @SharadHolani dijo. Esto no coincidirá con cada palabra que comience con "stop"

. Solo si está al principio de una línea como "deja de ir". @Waxo dio la respuesta correcta:

Ésta es ligeramente mejor, si desea hacer coincidir cualquier palabra que comienza con "parada" y que contiene nada más que cartas de de A a Z.

\bstop[a-zA-Z]*\b 

Esto coincidiría con toda la parada

(1)

parada al azar (2)

detener (3)

quieren a parada (4)

favor parada (5)

Pero

/^stop[a-zA-Z]*/ 

haría único partido (1) hasta (3), pero no (4) & (5)

Cuestiones relacionadas