Vés al contingut

Tema de Usuari Discussió:Vriullop/Fitxer de Discussions Estructurades 1

Amadalvarez (discussiócontribucions)

dins una plantilla, podem fer servir un Regex ?.

Li he preguntat al @Joutbis (que és qui m'ho ha fet) i sembla que fa falta aquesta extensió.

Pregunta: Hi ha alguna altra forma que funcioni de forma nativa ?. Si la resposta és SI: Com es fa ?. En concret em cal fer un match per veure si acompleix el pattern.

Si la resposta és NO:

Té sentit que instal·lem aquesta extensió ?.
La pots instal·lar ?
Serà un requeriment estrany per futurs usuaris de les infotaules ?

Gràcies

Vriullop (discussiócontribucions)

No puc instal·lar res, una extensió caldria demanar-la a phabricator i, sí, seria un requeriment massa dur per altres wikis.

Però ja tenim opcions: Mòdul:String funció match. Lua rocks! El paràmetre pattern accepta un string o un pattern que és un regex adaptat a Lua segons les especificacions de mw:Extension:Scribunto/Lua reference manual#Patterns. El paràmetre plain per defecte cerca amb pattern, amb plain=true només string.

{{#invoke:String|match|P1234|%d+}} dóna 1234

Amadalvarez (discussiócontribucions)

Fet !.

és a dir, un SÍ a la primera pregunta. Mmmmmm, una nova joguina per simplificar (o no) el codi les infotaules !!

Moltes gràcies, mestre Vicenç.

cc:@Joutbis@ESM, per al·lusions

Amadalvarez (discussiócontribucions)

Aprofito la conversa per informar que he creat {{MatchRegex}} amb la finalitat de comparar si un text s'ajusta a un patró, amb un codi més senzillet.

Té una sintaxi similar al #ifeq, és a dir, {{MatchRegex|<valor>|<patró>|<acció si quadra>|<acció si no quadra>}}

Només és útil per plantillers regexfíilics.

cc:@Joutbis@ESM @Paucabot

Vriullop (discussiócontribucions)

A notar que també serveix sense regex, pel match d'un string sempre que no inclogui cap caràcter interpretat com a pattern.

Amadalvarez (discussiócontribucions)

No ben bé. Tal com ho he fet és per validar el format total del text inicial

Joutbis (discussiócontribucions)

Molt bo! L'únic que hi trobo a faltar és la capacitat de parsejar, a base de capturar parts de la regexp entre parèntesi, i després referir-s'hi com a $1, $2, etc. Que aniria de conya per allò que volia l'Amador de les dates. Però suposo que ens en podem sortir igualment fent múltiples crides a aquest String::match. O sigui que molt bé.

Amador, fixa't que amb sintaxi Lua, l'expressió regular passa a ser [PQ]%d+

Amadalvarez (discussiócontribucions)

Ho sé, però si la cosa és més complexa, paga la pena fer servir el mòdul amb totes les seves funcionalitats, com diu el Vicenç. Però quan el que cal fer és molt simple, m'apunto al minimalisme de codi.

Vriullop (discussiócontribucions)

Llavors és la funció replace amb la mateixa sintaxi que la mw.ustring.gsub de Lua:

{{#invoke:String|replace|2019-12-10|(%d+)-(%d+)-(%d+)|%3-%2-%1|plain=false}} dóna 10-12-2019

Si només es vol el match també hi ha captures:

{{#invoke:String|match|2019-12-10|^(%d+)}} dóna 2019

Joutbis (discussiócontribucions)

Uau, potència!!

ESM (discussiócontribucions)

Marededew, vinc aquí "por ilusiones" i m'he perdut a les tres línies de conversa. Gràcies per la feinada, necessitaré un tutorial!

Amadalvarez (discussiócontribucions)

@ESM què vol dir "necessitaré un tutorial" ?, què esperes rebra'l o que tu crearàs un per fer divulgació.

Vriullop (discussiócontribucions)

Esther, aquí el servei d'assistència Som per Ajudar-hi, digues què necessites i ens encarreguem de dir-te que ho facis tu. No val aparentar que no saps regex, que m'ho ha dit un ocellet piulador.

Amadalvarez (discussiócontribucions)

Je je. Tothom l'ha vist a twitter explicant "la meva vida amb Regex"

ESM (discussiócontribucions)

Ep, disculpeu el retard en reaccionar. Sobre el que deia que necessitaré un tutorial, em referia a que necessitaré rebre'l, esteu fent unes virgueries que em tenen fascinada i agrairia una sessió pràctica, però anem tots tan atabalats que vés a saber quan trobarem un moment de calma. Pel que fa a a regex, sou uns exagerats! Encara estic a la fase de copiar-enganxar-tunejar codi d'altri (i així em va, que a vegades em surten uns bunyols magníficament barrocs per fer coses ben simples), però la regex que em demanava l'@Amadalvarez era relativament senzilla de treure. L'eina que utilitzo (regexr) ajuda molt!

Resposta a «Regex»