¿Cómo construyo una expresión regular para que coincida con un patrón mientras excluyo ciertas palabras conocidas que coincidirían con el patrón? En el ejemplo tengo esta cadena:
Me gusta d.r.e.a.m ir a hacer h i k i n g.
y tengo la siguiente expresión regular: b (. {1,2} (s |. | - | _)) {2,}
Esto coincide:
a d.r.e.a.m en
hacer h i k i n g.
Lo que quiero es cambiar esta expresión regular para que coincida:
sueño
h i k i n g.
Si lo cambio a esto b ([^ (to)] {1,2} (s |. | - | _)) {2,}
funcionará parcialmente pero excluiría letras individuales como "t" "o" en lugar de la palabra completa "to"
¿Cómo resolver esto?
Respuestas
2 para la respuesta № 1Puedes utilizar
/b(?!(?:I|at|[td]o)b)w{1,2}(?:[W_](?!(?:I|at|[td]o)b)w{1,2})*b/
Concuerda
b
- un límite de palabra(?!(?:I|at|[td]o)b)w{1,2}
- seguido de una palabra char de 1 o 2 palabras que no es igual aI
,at
,to
odo
(?:[W_](?!(?:I|at|[td]o)b)w{1,2})*
- 0+ repeticiones de:[W_]
- un carácter no verbal o_
(?!(?:I|at|[td]o)b)w{1,2}
- véase más arriba
b
- Un límite de palabra.