Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Arbetsyteappar
Copilot Studio
Modelldrivna appar
Power Platform CLI
Dataverse-funktioner
Power Pages
Tester för en matchning eller extraherar delar av en textsträng baserat på ett mönster.
Beskrivning
Funktionen IsMatch testar om en textsträng matchar ett mönster som kan bestå av vanliga tecken, fördefinierade mönster eller ett reguljärt uttryck. Funktionerna Match och MatchAll returnerar det som matchades, inklusive delmatchning.
Använd IsMatch för att verifiera vad en användare skrev i en textinmatningskontroll . Kontrollera till exempel om användaren har angett en giltig e-postadress innan resultatet sparas i datakällan. Om posten inte matchar dina villkor lägger du till andra kontroller som uppmanar användaren att åtgärda posten.
Använd Match för att extrahera den första textsträngen som matchar ett mönster och MatchAll för att extrahera alla textsträngar som matchar. Extrahera undermatchningar för att parsa komplexa strängar.
Match returnerar en post med information för den första matchningen som hittades och MatchAll returnerar en tabell med poster för varje matchning som hittas. Posten eller posterna innehåller:
| Kolumn | Typ | Beskrivning |
|---|---|---|
| Namngiven undermatchning eller delmatchningar | Text | Varje namngiven undermatchning har en egen kolumn. Skapa en namngiven undermatchning med hjälp av (?<Namn>... ) i det reguljära uttrycket. Om en namngiven undermatchning har samma namn som en av de fördefinierade kolumnerna har delmatchningen företräde och en varning genereras. Byt namn på delmatchningen för att undvika den här varningen. |
| FullMatch | Text | All textsträng som matchades. |
| StartMatch (på engelska) | Antal | Matchningens startposition i textsträngen. Det första tecknet i strängen är returnerar 1. |
| SubMatches, endast om MatchOptions.NumberedSubMatches används. | Tabell med en kolumn med en text (kolumn värde) | Tabellen med numrerade delmatchningsuppsättningar i den ordning som de visas i det reguljära uttrycket. I allmänhet är namngivna delmatchning enklare att arbeta med och uppmuntras. Använd funktionen ForAll eller Index för att arbeta med en enskild undermatchning. Om inga delmatchningsuppsättningar definieras i det reguljära uttrycket kommer den här tabellen att finnas men vara tom. |
Dessa funktioner stöder MatchOptions. Som standard:
- Dessa funktioner utför en skiftlägeskänslig matchning. Använd MatchOptions.IgnoreCase för att utföra skiftlägeskänsliga matchningar.
- IsMatch matchar hela textsträngen (Complete MatchOption), medan Match och MatchAll sök efter en matchning var som helst i textsträngen (Innehåller MatchOption). Use Complete, Contains, BeginsWith eller EndsWith som passar ditt scenario.
IsMatch returnerar sant om textsträngen matchar mönstret eller false om den inte gör det. Match returnerar tomt om ingen matchning hittas som kan testas med funktionen IsBlank . MatchAll returnerar en tom tabell om ingen matchning hittas som kan testas med funktionen IsEmpty .
Om du använder MatchAll för att dela upp en textsträng bör du överväga att använda funktionen Dela , vilket är enklare och snabbare.
Mönster
Dessa funktioner används genom att man beskriver det mönster som ska matchas. Du beskriver mönstret i en textsträng som en kombination av:
- Vanliga tecken, till exempel "abc" eller "123".
- Fördefinierade mönster, till exempel Letter, MultipleDigits eller Email. (Uppräkningen Match definierar dessa mönster.)
- Reguljära uttryckskoder som "\d+\s+\d+" eller "[a-z] +".
Kombinera dessa element med strängsammanfogningsoperatorn &. Till exempel är "abc" & Digit & "\s+" ett giltigt mönster som matchar tecknen "a", "b" och "c", följt av en siffra från 0 till 9, följt av minst ett blanksteg.
Vanliga tecken
Det enklaste mönstret är en sekvens med vanliga tecken som matchar exakt.
När den IsMatch till exempel används med funktionen matchar strängen "Hello" mönstret "Hello" exakt. Varken mer eller mindre. Strängen "hello!" matchar inte mönstret på grund av utropstecknet i slutet och eftersom fallet är fel för bokstaven "h". (Se Match alternativ för olika sätt att ändra det här beteendet.)
I mönsterspråket är tecknen . ? * + ( ) [ ] ^ $ | \ reserverade för särskilda ändamål. Om du vill använda dessa tecken kan du antingen prefixa tecknet med ett \ (omvänt snedstreck) för att indikera att tecknet ska tas bokstavligen eller använda något av de fördefinierade mönstren. Du kan till exempel matcha strängen "Hello?" med hjälp av mönstret "Hello\\?" med ett omvänt snedstreck före frågetecknet.
Fördefinierade mönster
Fördefinierade mönster är ett enkelt sätt att matcha en uppsättning tecken, eller en sekvens med flera tecken. Använd strängsammanfogningsoperatorn & för att kombinera dina egna textsträngar med medlemmar i Match uppräkningen:
| Match uppräkning | Beskrivning | Reguljärt uttryck |
|---|---|---|
| Någon | Matchar alla tecken. | . |
| Komma | Matchar ett kommatecken ,. |
, |
| Siffra | Matchar en entalssiffra ("0" till "9"). | \d |
| Skicka e-post | Matchar en e-postadress som innehåller symbolen "at" ("@") och ett domännamn som innehåller en punkt (".") | Se anteckning |
| Bindestreck | Matchar ett bindestreck. |
-
Se anteckning |
| LeftParen | Matchar en vänster parentes (. |
\( |
| Brev | Matchar en bokstav. | \p{L} |
| Flera siffror | Matchar en eller flera siffror. | \d+ |
| MultipleLetters (flera bokstäver) | Matchar en eller flera bokstäver. | \p{L}+ |
| MultipleNonSpaces | Matchar ett eller flera tecken som inte lägger till blanksteg (inget mellanslag, tabb, ny rad). | \S+ |
| MultipleSpaces | Matchar ett eller flera tecken som lägger till blanksteg (mellanslag, tabb, ny rad). | \s+ |
| Icke-mellanslag | Matchar ett enskilt tecken som inte lägger till blanksteg. | \S |
| Valfria siffror | Matchar ingen, en eller flera siffror. | \d* |
| OptionalLetters (valfria) | Matchar ingen, en eller flera bokstäver. | \p{L}* |
| OptionalNonSpaces (Valfritt) | Matchar inget, ett eller flera tecken som inte lägger till blanksteg. | \S* |
| OptionalSpaces (Valfritt) | Matchar inget, ett eller flera tecken som lägger till blanksteg. | \s* |
| Period | Matchar en punkt eller punkt .. |
\. |
| RightParen | Matchar en höger parentes ). |
\) |
| Rymd | Matchar ett tecken som lägger till blanksteg. | \s |
| Flik | Matchar en flikkaraktär. | \t |
Mönstret "A" och MultipleDigits matchar till exempel bokstaven "A" följt av en eller flera siffror.
Power Apps använder en annan definition för Match. E-post och Match. Bindestreck. Utvärdera Text( Match.Email ) för att se det reguljära uttryck som används av värden.
Reguljära uttryck
Det mönster som dessa funktioner använder kallas för ett reguljärt uttryck. Power Fxs specifika dialekt av reguljära uttryck beskrivs i Reguljära uttryck i Power Fx.
Reguljära uttryck är kraftfulla och har en mängd olika syften. De kan också se ut som en slumpmässig sekvens med skiljetecken. Den här artikeln beskriver inte alla aspekter av reguljära uttryck, men en mängd information, självstudier och verktyg finns tillgängliga online.
Reguljära uttryck har en lång historik och finns på många programmeringsspråk. Varje programmeringsspråk har sin egen dialekt av reguljära uttryck, och det finns få standarder. Vi strävar efter att se till att samma reguljära uttryck ger samma resultat i alla Power Fx-implementeringar. Kompatibilitet är inte lätt att uppnå eftersom Power Fx körs ovanpå JavaScript och .NET som har betydande skillnader. För att hantera körning på olika plattformar är vanliga Power Fx-uttryck begränsade till en delmängd av funktioner som stöds i stor utsträckning i hela branschen.
Därför kan vissa reguljära uttryck som kan fungera i andra miljöer blockeras eller kräva en justering i Power Fx. Redigeringstidsfel rapporteras eftersom funktioner som inte stöds påträffas. Detta är en av anledningarna till att reguljära uttryck och alternativ måste vara en redigeringstidskonstant och inte dynamisk (till exempel i en variabel).
Anmärkning
Power Apps använder en tidigare version av reguljära Power Fx-uttryck som har färre begränsningar men också färre funktioner. MatchOptions.DotAll och MatchOptions.FreeSpacing är inte tillgängliga och definitionerna för Match. E-post och Match. Bindestreck är olika. Unicode-surrogatpar behandlas inte som ett enda tecken. MatchOptions.NumberedSubMatches är standardinställningen. Versionen av reguljära uttryck som beskrivs här kommer snart att vara tillgänglig i Power Apps, under en "Power Fx V1.0-kompatibilitetsväxel".
Här följer några grundläggande element i reguljära uttryck som skapar komplexitet vid parsning av ett tal.
| Egenskap | Example | Beskrivning |
|---|---|---|
| Fördefinierad teckenklass | \d |
Det här reguljära uttrycket matchar ett enda tal, till exempel 1. En teckenklass matchar en uppsättning tecken och \d matchar standardsiffrorna 0 till 9 och även siffror som definieras i Unicode-teckenkategorin "Nd". Det finns teckenklasser för bokstäver och siffror med \w och blanksteg, inklusive nya streck med \s. Det finns också inverterade teckenklasser som är versaler: \D matchar allt som inte gör det \d . |
| En eller flera | \d+ |
Det här reguljära uttrycket matchar ett eller flera tal, till exempel 123. En + efter ett element säger "en eller flera" av det sista elementet. |
| Noll eller ett | \+?\d |
Det här reguljära uttrycket matchar ett valfritt + tecken följt av en eller flera tal, till exempel +123 samt bara 123. Efter ? ett element står det "det här är valfritt, det kan inträffa noll eller en gång". Har + ett omvänt snedstreck före det för att särskilja det som ett literaltecken i stället för "en eller flera" användning. |
| Gruppering och växling | (-|\+)?\d+ |
Det här reguljära uttrycket matchar antingen ett + tecken eller ett -, om du vill, och sedan en serie tal, till exempel -123, +123och 123. Vi introducerar två begrepp här som ofta används tillsammans. Först har vi parentesen som grupperar som en uppsättning element tillsammans, för ? att agera på. För det andra har | vi som säger "antingen det ena eller det andra". |
| Anpassad teckenklass | (-|\+)?\d+[eE][\-\+]?\d+ |
Det här reguljära uttrycket lägger till en exponent i mixen med två teckenklasser som matchar +123e-12. En teckenklass är som | växling som ger en "matcha en av dessa saker" i en mer kompakt form. Precis som med +, - har särskild betydelse i reguljära uttrycksteckenklasser så vi måste undvika det. |
| Noll eller mer | (-|\+)?\d+\.?\d*[eE][\-\+]?\d+ |
Det här reguljära uttrycket lägger till decimaltecknet efter heltalsdelen av talet, till exempel -123.456e-89 eller -123.E+32. Efter \d decimaltecknet har en * kvantifierare som säger "noll eller fler gånger" för decimalsiffror efter . |
| Samla in grupper | (?<number>(-|\+)?\d+\.?\d*)[eE](?<exponent>[\-\+]?\d+) |
Slutligen lägger vi till insamlingsgrupper för number och exponent. Ett reguljärt uttryck kan inte bara matcha hela strängen, det kan också extrahera delar för användning i dina formler, i det här fallet delen före e (eller E) och delen efter. |
De här exemplen ger bara en liten smak av vad reguljära uttryck kan göra. De används ofta för att verifiera ID-nummer, e-postadresser, telefonnummer, datum och tider och för att extrahera information från alla typer av textfiler. Fortsätt din resa genom att läsa reguljära uttryck i Power Fx, experimentera och använda webben för att lära dig mer.
Match Alternativ
Ändra beteendet för dessa funktioner genom att ange ett eller flera alternativ som du kombinerar med strängsammanfogningsoperatorn (&).
| MatchOptions-uppräkning | Beskrivning | Påverkan på reguljära uttryck |
|---|---|---|
| MatchOptions.BeginsWith | Mönstret måste matcha från början av texten. | Lägger till ^ i början av det reguljära uttrycket. |
| MatchOptions.Complete (på engelska) | Standard för IsMatch i Power Apps. Mönstret matchar hela textsträngen från början till slut. | Lägger till ^ i början och en $ i slutet av det reguljära uttrycket. |
| MatchOptions.Contains | Standard för Match och MatchAll, och IsMatch utanför Power Apps. Mönstret måste finnas någonstans i texten, men behöver inte inleda eller avsluta den. | Ändrar inte det reguljära uttrycket. |
| MatchOptions.DotAll | Ändrar beteendet för operatorn . (punkt) så att den matchar alla tecken, inklusive nya radtecken. Inte tillgängligt i Power Apps. |
Ändrar inte det reguljära uttrycket. Det här alternativet motsvarar standardmodifieraren "s" för reguljära uttryck. |
| MatchOptions.EndsWith | Mönstret måste matcha slutet på textsträngen. | Lägger till $ i slutet av det reguljära uttrycket. |
| MatchOptions.FreeSpacing | Blankstegstecken, inklusive nya streck, ignoreras i det reguljära uttrycket. Slutkommentarer som börjar med en # ignoreras. Inte tillgängligt i Power Apps. |
Ändrar bara syntaxen för reguljära uttryck. Det här alternativet motsvarar standardmodifieraren "x" för reguljära uttryck. |
| MatchOptions.IgnoreCase | Behandlar versaler och gemener som identiska. Som standard är matchning skiftlägeskänsligt. | Ändrar inte det reguljära uttrycket. Det här alternativet motsvarar standard "i"-modifieraren för reguljära uttryck. |
| MatchOptions.Multiline | Ändrar beteendet ^ för och $ så att det matchar i slutet av en rad. |
Ändrar inte det reguljära uttrycket. Det här alternativet motsvarar standard "m"-modifieraren för reguljära uttryck. |
| MatchOptions.NumberedSubMatches | Namngivna avbildningar är att föredra eftersom de är lättare att förstå och underhålla. Prestanda förbättras också eftersom onödiga avbildningar inte behålls. Men för äldre reguljära uttryck behandlar varje uppsättning parenteser som en numrerad avbildning som ingår i tabellen SubMatches i resultatet. Standard i Power Apps. | Ändrar inte det reguljära uttrycket. Namngivna avbildningar är inaktiverade och \1 formateringsreferenser är aktiverade. |
Att använda MatchAll är detsamma som att använda standardmodifieraren "g" för reguljära uttryck.
Syntax
IsMatch( Text, Mönster [, Alternativ ] )
- Text – obligatoriskt. Textsträngen som ska testas.
- Mönster – obligatoriskt. Mönster som ska testas, som en textsträng. Sammanfoga fördefinierade mönster som Match uppräkningen definierar eller ger ett reguljärt uttryck. Mönstret måste vara en konstant formel utan variabler, datakällor eller andra dynamiska referenser som ändras när appen körs. Observera att formeln måste uttryckas som "Match. PredefinedPattern" t.ex. Match. E-post
- Alternativ – Valfritt. En textsträngskombination av uppräkningsvärden i MatchOptions. Som standard används MatchOptions.Complete. Alternativen måste vara en konstant formel utan variabler, datakällor eller andra dynamiska referenser som ändras när appen körs.
Match( Text, Mönster [, Alternativ ] )
- Text – obligatoriskt. Textsträngen som ska match.
- Mönster – obligatoriskt. Mönster som ska match, som en textsträng. Sammanfoga fördefinierade mönster som Match uppräkningen definierar eller ange ett reguljärt uttryck. Mönstret måste vara en konstant formel utan några variabler, datakällor eller andra dynamiska referenser som ändras när appen körs.
- Alternativ – Valfritt. En textsträngskombination av uppräkningsvärden i MatchOptions. Som standard används MatchOptions.Contains. Alternativen måste vara en konstant formel utan variabler, datakällor eller andra dynamiska referenser som ändras när appen körs.
MatchAll( Text, Mönster [, Alternativ ] )
- Text – obligatoriskt. Textsträngen som ska match.
- Mönster – obligatoriskt. Mönster som ska match, som en textsträng. Sammanfoga fördefinierade mönster som Match uppräkningen definierar eller ger ett reguljärt uttryck. Mönstret måste vara en konstant formel utan variabler, datakällor eller andra dynamiska referenser som ändras när appen körs.
- Alternativ – Valfritt. En textsträngskombination av uppräkningsvärden i MatchOptions. Som standard används MatchOptions.Contains. Alternativen måste vara en konstant formel utan variabler, datakällor eller andra dynamiska referenser som ändras när appen körs.
IsMatch Exempel
Vanliga tecken
Anta att din app har en textinmatningskontrollmed namnet TextInput1. Användarna anger värden i den här kontrollen för att lagra dem i en databas.
Användare skriver Hello world i TextInput1.
| Formel | Beskrivning | Resultat |
|---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
Testar om användarens indata matchar exakt med strängen "Hello world". | sann |
IsMatch( TextInput1.Text, "Good bye" ) |
Testar om användarens indata matchar exakt med strängen "Good bye". | falsk |
IsMatch( TextInput1.Text, "hello", Contains ) |
Testar om användarens indata innehåller ordet "hello" (skiftlägeskänsligt). | falsk |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Testar om användarens indata innehåller ordet "hello" (skiftlägesokänsligt). | sann |
Fördefinierade mönster
| Formel | Beskrivning | Resultat |
|---|---|---|
IsMatch( "123-45-7890", Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit & Match.Digit ) |
Matchar ett socialförsäkringsnummer i USA | sann |
IsMatch( "joan@contoso.com", Match.Email ) |
Matchar en e-postadress | sann |
IsMatch( "123.456", Match.MultipleDigits & Match.Period & Match.OptionalDigits ) |
Matchar en sekvens av siffror, en punkt och sedan noll eller flera siffror. | sann |
IsMatch( "123", Match.MultipleDigits & Match.Period & Match.OptionalDigits ) |
Matchar en sekvens av siffror, en punkt och sedan noll eller flera siffror. Det finns inte någon punkt i texten till match så det här mönstret matchade inte. | falsk |
Reguljära uttryck
| Formel | Beskrivning | Resultat |
|---|---|---|
IsMatch( "986", "\d+" ) |
Matchar ett heltal som är större än noll. | sann |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
Matchar ett positivt valutabelopp. Om indatan innehåller ett decimaltecken, måste indatan även innehålla två numeriska tecken efter decimaltecknet. Till exempel är 3,00 giltigt, men inte 3,1. | sann |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
Matchar ett positivt eller ett negativt valutabelopp. Om indatan innehåller ett decimaltecken, måste indatan även innehålla två numeriska tecken efter decimaltecknet. | sann |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
Matchar ett socialförsäkringsnummer i USA Verifierar format, typ och längd på det angivna indatafältet. Strängen som ska matcha måste bestå av tre numeriska tecken följt av ett tankstreck, sedan två numeriska tecken följt av ett tankstreck och slutligen fyra numeriska tecken. | sann |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
Samma som i föregående exempel, men ett av bindestrecken ligger på fel plats i indatan. | falsk |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
Validerar ett starkt lösenord som måste innehålla åtta, nio eller tio tecken, minst en siffra och minst ett alfabetiskt tecken. Strängen får inte innehålla specialtecken. | falsk |
Match och MatchAll exempel
| Formel | Beskrivning | Resultat |
|---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>") |
Extraherar endast e-postdelen av kontaktinformationen. | { e-post: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
Extraherar endast e-postdelen av kontaktinformationen. Det gick inte att hitta någon juridisk adress (det finns inget @-tecken), så funktionen returnerar blank. | blank |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
Extraherar språket, skriptet och regionens delar av språketiketten som funktionen Language returneras. De här resultaten återspeglar USA, se funktionen Language dokumentation för fler exempel. (?: operatorn grupperas tecknen utan att ytterligare och undermatchning skapas. | { language: "en", script: blank, region: "US", FullMatch: "en-US", StartMatch: 1 } |
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) |
Extraherar timmarna, minuter och sekunder från ett varaktighetsvärde i ISO 8601. De extraherade numren finns fortfarande i en text sträng. Använd funktionen Value för att konvertera den till ett tal innan matematiska åtgärder utförs på den. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", StartMatch: 1 } |
Låt oss detaljgranska i det förra exemplet. Om du vill konvertera den här strängen till ett datum-/tidsvärde med hjälp av funktionen Tid måste du skicka in de namngivna delmatchningarna individuellt. Det gör du genom att använda funktionen Med som körs på posten som Match returnerar:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
I dessa exempel lägger du till en Button kontroll anger du dess egenskap OnSelect för den här formeln och markerar sedan knappen:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
| Formel | Beskrivning | Resultat |
|---|---|---|
Match( pangram, "THE", IgnoreCase ) |
Sök efter alla matchningar av "THE" i den textsträng som pangram-variabeln innehåller. Strängen innehåller två matchningar, men endast den första returneras eftersom du använder Match och inte MatchAll. | { FullMatch: "The", StartMatch: 32 } |
MatchAll( pangram, "the" ) |
Sök efter alla matchningar av "the" i den textsträng som pangram-variabeln innehåller. Testet är skiftlägeskänsligt, så att endast den andra instansen av "the" hittas. |
|
MatchAll( pangram, "the", IgnoreCase ) |
Sök efter alla matchningar av "the" i den textsträng som pangram-variabeln innehåller. I det här fallet är testet inte skiftlägeskänsligt, så båda instanserna av ordet hittas. |
|
MatchAll( pangram, "\b\wo\w\b" ) |
Söker efter alla tre bokstäver med ett "o"-ord i mitten. "brun" utesluts eftersom det inte är ett ord med tre bokstäver och därför inte matchar "\b" (ordgräns). |
|
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
Matchar alla tecken mellan "räv" och "hund". | { mellan: "hoppar över lata", FullMatch: "räv hoppar över den lata hunden", StartMatch: 17 } |
Så här ser du resultatet av MatchAll i ett galleri:
Infoga en tom lodrät gallerikontroll på en tom skärm.
Ange galleriets objektegenskap till MatchAll( pangram, "\w+" ) eller MatchAll( pangram, MultipleLetters ).
Välj "Lägg till ett objekt från fliken Infoga" i mitten av gallerikontrollen för att välja mall för galleriet.
Lägg till en Label i gallerimallen.
Ställ in etikettens Text till ThisItem.FullMatch.
Galleriet fylls i med varje ord i vår exempeltext. Om du vill se alla ord på en skärm ändrar du storlek på galleriets mall och etikettkontrollen.