validar solo regulares regular que probar online numeros mayores letras expresiones expresion espacios espacio ejemplos blanco aplicaciones alfanumerico regex

regex - solo - Varias palabras en cualquier orden usando expresiones regulares



regex replace online (7)

Como dice el título, necesito encontrar dos palabras específicas en una oración. Pero pueden estar en cualquier orden y cualquier carcasa. ¿Cómo hago esto usando regex?

Por ejemplo, necesito extraer las palabras test y long de la siguiente oración, ya sea que la test palabra sea lo primero o que llegue el momento.

This is a very long sentence used as a test

ACTUALIZACIÓN: Lo que no mencioné en la primera parte es que también debe ser insensible a las mayúsculas y minúsculas.


Estaba usando libpcre con C, donde podría definir textos destacados. Me ayudaron a hacer coincidir fácilmente no solo palabras, sino cualquier subexpresiones en cualquier orden. La expresión regular se ve así:

(?C0)(expr1(?C1)|expr2(?C2)|...|exprn(?Cn)){n}

y la función de llamada asegura que cada subexpresión se empareja exactamente una vez, como:

int mycallout(pcre_callout_block *b){ static int subexpr[255]; if(b->callout_number == 0){ //callout (?C0) - clear all counts to 0 memset(&subexpr,''/0'',sizeof(subexpr)); return 0; }else{ //if returns >0, match fails return subexpr[b->callout_number-1]++; } }

Algo así debería ser posible en Perl también.


No creo que puedas hacerlo con una sola expresión regular. Necesitarás da lógica Y de dos - uno buscando cada palabra.


Prueba esto:

/(?i)(?:test.*long|long.*test)/

Eso coincidirá con cualquiera de las test y luego con las long , o las long y luego las test . Ignorará las diferencias de casos.



Supongo (siempre peligroso) que quiere encontrar palabras completas, por lo que "prueba" coincidiría pero "irritable" no lo haría. Por lo tanto, el patrón debe buscar límites de palabras, por lo que utilizo el patrón de límite de palabras "/ b".

/(?i)(/btest/b.*/blong/b|/blong/b.*/btest/b)/


Utilice un grupo de captura si desea extraer las coincidencias: (prueba) | (larga) Luego, dependiendo del idioma en uso, puede referirse al grupo emparejado usando $ 1 y $ 2, por ejemplo.


sin saber qué idioma

/test.*long/

o

/long.*test/

o

/test/ && /long/