2011-10-05 12 views
5

Estoy tratando de ejecutar una expresión regular en php (preg_match_all) que coincida con ciertas palabras completas en una cadena, pero el problema es que también coincide con las palabras que contienen solo parte de una palabra probada. También esta es una subconsulta en una expresión regular más grande, por lo que otras funciones PHP como strpos no me ayudarán, por desgracia.PCRE haciendo coincidir palabras completas en una cadena

Cadena: "I test a string"

palabras que deben coincidir: "testable", "string"

expresión regular Probado: /([testable|string]+)/

Resultado esperado: "string" solamente!

Resultado: "test", "a", "string"

+3

Su expresión regular es exactamente equivalente a '/ ([abegilnrst |] +) /' – NullUserException

+0

gracias, lo tengo resuelto ahora ... pero ¿por qué eliminó su respuesta?: D – Inoryy

Respuesta

8

Si realmente desea asegurarse de que sólo Obtenga sus palabras y no las palabras que las contienen, luego puede usar los delimitadores de palabras:

/\b(testable|string)\b/ 

Esto coincidirá solo con un límite de palabra seguido por testable o string y luego otro límite de palabra.

2

Usted no quiere una clase de caracteres con [], lo que desea para que coincida con las palabras:

/testable|string/

Cuestiones relacionadas