PDA

Ver la Versión Completa : [ SOLUCIONADO ] Coincidencia de patrones


Rsc
20/07/17, 19:49:10
Buenas, estoy teniendo problemas con la coincidencia de patrones de Tasker, a ver si alguien sabe en que estoy fallando.

Utilizo !*:+ para descartar palabra:palabra y lo descarta de forma correcta.

El problema que también descarta palabra: y si no estoy equivocado, no debería ser así, ya que el símbolo + requiere que el campo no este vacío.

No se si estoy fallando en algo, o es un posible error de Tasker.

Saludos

GraphicAdventure
22/07/17, 11:49:53
Según lo que pones no estás fallando, debería funcionar.
Voy a suponer que estás utilizando la expresión en un contexto. Si es así, ¿qué tipo de contexto?

Caravantes
22/07/17, 12:38:51
No se si estoy fallando en algo, o es un posible error de Tasker.

En Google puedes buscar por "regular expression online" y encontrarás unos cuantos sitios web donde puedes probar expresiones regulares (o RegEx): introduces el patrón y el texto de entrada, obteniendo como resultado el texto de salida tras haberle aplicado el patrón. Ejemplo:
https://regex101.com/

Rsc
23/07/17, 00:04:09
Gracias a ambos por contestar.

Se trata de un evento de notificación. Cuando la notificación es de un contacto es así:

Contacto (3 mensajes):

Y cuando la notificación es de un grupo así:

Grupo (3 mensajes): Contacto.

El fin es descartar las notificaciones de los grupos.

Viendo que no tenía sentido que !*:+ coincidiera con Contacto: probé a escribir la notificación en un archivo de texto, y le añadí un texto justo a continuación sin espacios.

%Notificación(1)texto

Al comprobarlo me di cuenta que entre la notificación y la palabra texto, habían dos espacios, y supongo que + también interpreta un espacio como un carácter.

Para solucionarlo, hice uso de una de las novedades de la nueva versión de Tasker, que es, poder usar regex en lugares que antes solo se podía usar Coincidencia de Patrones.

Y puse esta cadena:

!~R.*:.{3}

Así puede indicar que no coincida con ninguna cadena de texto que tenga más de tres caracteres después de los dos puntos y ahora si que funciona.

GraphicAdventure
23/07/17, 09:00:30
Para solucionarlo, hice uso de una de las novedades de la nueva versión de Tasker, que es, poder usar regex en lugares que antes solo se podía usar Coincidencia de Patrones.

¿Esa funcionalidad salió en la v5.0 no?
¿La v5.0 Tasker es solo para Android 5?
No me sale en Play Store para actualizar.
Tengo instalada la v4.9 pero curiosamente en una condición me permite elegir que coincida con regex o no. :oh:


Y puse esta cadena:

!~R.*:.{3}

Así puede indicar que no coincida con ninguna cadena de texto que tenga más de tres caracteres después de los dos puntos y ahora si que funciona.

Que tenga más de 2 caracteres quieres decir.
Visto que el problema es que la notificación se genera con 2 espacios al final si los pones antes del carácter de suma en la coincidencia de patrones funciona igualmente.
Al final estás usando la expresión en una condición y no en el contexto propiamente dicho pero da igual dado que el problema está en la notificación.

Rsc
25/07/17, 12:16:56
¿Esa funcionalidad salió en la v5.0 no?

Si, y creo que es interesante. Las Coincidencias de Patrones de Tasker estaban muy bien, pero Regex aporta más posibilidades a la hora de buscar cadenas de caracteres.

¿La v5.0 Tasker es solo para Android 5?

Solo para Android 5.0+

No me sale en Play Store para actualizar.

Supongo que ahora si que le habrá llegado la actualización a todo el mundo, además ayer mismo se actualizó a 5.0u2.

Tengo instalada la v4.9 pero curiosamente en una condición me permite elegir que coincida con regex o no

En la página de Tasker, figura lo siguiente en la Notas de la Versión, relativas a la versión 5.0

wherever a simple match is possible,~R at the start indicates a regex match instead, !~R indicates a negative regex match.

La forma correcta de utilizarlo es: ~RPerr[oa], en difinitiva, ~R o !~R y sin dejar ningún espacio, los caracteres y metacaracteres que queramos utilizar.

Que tenga más de 2 caracteres quieres decir.
Cierto, más de dos.

Visto que el problema es que la notificación se genera con 2 espacios al final si los pones antes del carácter de suma en la coincidencia de patrones funciona igualmente.

Buena opción. La verdad es que pudiendo utilizar Regex vamos a tener muchas opciones para buscar cadenas. En mi caso lo que me dio dolor de cabeza fue averiguar que la notificación generaba dos espacios después del texto.

Al final estás usando la expresión en una condición y no en el contexto propiamente dicho pero da igual dado que el problema está en la notificación.

La utilizo para comprobar que la notificación coincida o no, con el título de la notificación entrante. Creo que si es un Contexto de Evento no? pero no me hagas mucho caso, a veces me lío con algunos términos.

Un saludo.