Gebruiker:Bmulckhu/kladblok6

Uit TheaterEncyclopedie
Ga naar: navigatie, zoeken

Dit probleem is verplaatst vanaf de vorige pagina, omdat zich daar teveel regex-functies bevinden (er is een limiet!! - zie documentatie!)

Probleem invoer meervoudige waarden met komma gescheiden en met vierkante haken

Dit probleem komt (o.a.) bij het toewijzen van de producent / gezelschappen in de sjabloon [[Sjabloon:Infobox_productie]]

Stap1: Vervangen komma door puntkomma:

{{#rreplace: Producent1, Producent2, Producent3 | \, | ; }}

Resultaat: Producent1, Producent2, Producent3


vervolg

Stap: Laten vervallen vierkante haken en/of vervangen komma door puntkomma vereist nesting - werkt dat?? - het lijkt van niet...

Andere aanpak: "Vervang iedere reeks, evt. voorafgegaan door vierkante haken en evt. opgevolgd door een pipe met een naam en vierkante haken, maar steeds gevolgd door een komma, door die reeks gevolgd door een puntkomma...

Regex:

{{#rreplace: Producent1, [[Productent2]], [[Producent3|naam]], Producent4 | (\[\[)*(\.+)((\{{!}}\.*)*\]\])*\,| $2;}}
Oorspronkelijke regex: (\[\[)*(\w+)((\|\w*)*\]\])*\,
Alternatieve regex: (\[\[)*(\.+)((\|\.*)*\]\])*\,   (( de "w" lijkt niet herkend te worden door de extensie...maar toch wel...

Resultaat: Producent1, Productent2; naam, Producent4

BM: Het bovenstaande resultaat wordt (nog???) niet conform de oorspronkelijke regex gefilterd??? object cache??? - Opgelost door regex op nieuwe pagina te plaatsen; teveel regex op een pagina is gelimiteerd door de extensie - zie docs

Probleem is nog de laatste variabele (indien die ook tussen vierkante haken staat wordt dat niet verbeterd...)

Verbeterde versie:

(\[\[)*(\w+)((\|\w*)*\]\])*(\,)*

Resultaat: Producent1, Productent2; naam, Producent4

Opmerking: deze regex geeft een extra puntkomma aan het einde van de reeks. Nog testen of dat problematisch is bij toewijzingen...

Probleem is verder dat de productennaam en weergavenaam ook spaties, liggende streepjes en underscores kunnen bevatten. Deze worden niet door de "w"-parameter gevangen...

regex: {{#rreplace: Producent1, [[Productent2]], [[Pro du-cent3|na-am]], [[Producent4]] | (\[\[)*((\w{{!}}\s{{!}}-{{!}}_)+)((\{{!}}(\w{{!}}\s{{!}}-{{!}}_)*)*\]\])*(\,)*\s* | $2; }}
Bron regex: (\[\[)*((\w|\s|-|_)+)((\|(\w|\s|-|_)*)*\]\])*(\,)*\s*

Resultaat: Producent1, Productent2; [[Pro du-cent3; Producent4

Resultaat2 (nesting) met hieronder bedachte oplossing: Producent1, Productent2; [[Pro du-cent3; Producent4

Deze regex kan in het infobox productie worden opgenomen.

extra puntkomma oplossing

NB: Deze regex geeft (gaf) een extra puntkomma aan het einde. Deze puntkomma wordt niet semantisch geïnterpreteerd als een extra waarde (leeg), maar wordt wel weergegeven door de sjabloon:Productie (sjabloon:TEbox/rij) als een komma en een set dubbele vierkante haken. Dit is lelijk en moet in deze sjabloon zelf nog gecorrigeerd worden.

Huidige tekst:

--><td style="border-bottom-style:none; border-color:#330080; border-width: 0px; width:60%;">{{#rmatch:{{{3}}}|;|{{#set:{{{2}}}={{{3}}}|+sep=;}}[[{{#replace:{{{3}}}|;|{{))}}, {{((}}}}]]|[[{{{2}}}::{{{3}}}]]</td>}}</tr>|}}</includeonly>

Hier lijkt een dubbele annotatie plaats te vinden (silent m.b.v. #set EN met behulp van inline annotatie met :: )

Dit veroorzaakt de extra haken:

[[{{#replace: tekst1;tekst2;tekst3;|;|{{))}}, {{((}}}}]]

Resultaat: tekst1, tekst2, tekst3, [[]]

Mogelijk eenvoudig op te lossen met:

[[{{#replace: {{#rreplace:tekst1;tekst2;tekst3;|;$|}}|;|{{))}}, {{((}}}}]]

tekst1, tekst2, tekst3