Прочитај на енглеском

Делите путем


Функције ИсМатцх, Матцх и МатцхАлл

Односи се на: Апликације платна ЦЛИ апликације Power Pages Power Platform засноване на моделу

Тестира за подударање или издваја делове текстуалне ниске на основу обрасца.

Опис

Функција IsMatch тестира да ли се текстуална ниска подудара са обрасцем који може садржавати обичне знакове, унапред дефинисане обрасце или регуларни израз. Функције Match и MatchAll враћају подударања, укључујући и подударања мањег степена.

Користите IsMatch да бисте проверили ваљаност онога што је корисник укуцао у контроли Text input. На пример, можете да потврдите да ли је корисник унео важећу адресу е-поште пре него што се резултат сачува у ваш извор података. Ако се ставка не подудара са вашим критеријумима, додајте друге контроле које ће од корисника затражити да исправи ставку.

Користите Match да бисте издвојили прву текстуалну ниску која се подудара са обрасцем и MatchAll да бисте издвојили све текстуалне ниске које се подударају. Можете и да издвојите подударања мањег степена да бисте рашчланили сложене ниске.

Меч враћа запис информација за први меч пронађен, и МатцхАлл враћа табелу записа за сваки меч пронађен. Запис или записи садрже:

Column Тип Опис
Именовани подмеч или подмечеви Текст Сваки именовано подударање мањег нивоа ће имати своју колону. Креирајте именовано подударање мањег нивоа помоћу (?<назив>...) у регуларном изразу. Ако именовано подударање мањег нивоа има исти назив као и једна од унапред дефинисаних колона (испод), подударање мањег нивоа има предност, а генерише се упозорење. Да бисте избегли ово упозорење, преименујте подударање мањег нивоа.
Комплетне утакмице Текст Цела текстуална ниска која се подударала.
Почетак утакмице Број Почетна позиција подударања у улазној текстуалној ниски. Први знак ниске враћа 1.
Подмечеви Табела са једном колоном текста (колона Вредност) Табела именованих и неименованих подударања мањег нивоа у редоследу у којем се појављују у регуларном изразу. Генерално, са именованим подударањима мањег нивоа је лакше радитиа, а они се препоручују. Користите функцију ForAll или функције Last( FirstN( ... ) ) за рад са појединачним подударањем мањег нивоа. Ако у регуларном изразу нису дефинисана подударања мањег нивоа, ова табела ће бити присутна, али празна.

Ове функције подржавају MatchOptions. Подразумевано:

  • Ове функције изводе подударање које разликује велика и мала слова. Користите МатцхОптионс .ИгнореЦасе да бисте извршили подударања без разликовања великих и малих слова.
  • ИсМатцх одговара читавом текстуалном низу ( Цомплете МатцхОптион), док Матцх и МатцхАлл траже подударање било где у текстуалном низу ( садржи МатцхОптион). Користите Complete, Contains, BeginsWith или EndsWith, како одговара вашем сценарију.

ИсМатцх враћа труе ако се текстуални стринг поклапа са моделом или лаж ако се не поклапа. Подударање враћа празно ако није пронађено ниједно подударање које може да се тестира помоћу IsBlank функције. МатцхАлл враћа празну табелу ако се не нађе подударање које се може тестирати са функцијом ИсЕмптy .

Ако користите MatchAll да бисте поделили текстуалну ниску, размислите о коришћењу функције Split која је једноставнија за употребу и бржа.

Обрасци

Кључ за коришћење ових функција је у опису обрасца који треба да се подудара. Описујете образац у текстуалној ниски као комбинацију:

  • Обичних знакова, као што су „abc“ или „123“.
  • Унапред дефинисани обрасци, као што су Писмо, MultipleDigits или Е-порука. (Нумеричка Match дефинише ове обрасце.)
  • Кодови регуларног израза, као што су "\d+\s+\d+" или „[a-z]+“.

Комбинујте ове елементе помоћу оператора стринг-цонцатенатион & . На пример, "абц" & Дигит & "\с +" је важећи образац који одговара знаковима"а", "б" и "ц", након чега следи цифра од 0 до 9, а затим најмање један знак размака.

Обични знакови

Најједноставнији образац је низ обичних знакова који се тачно подударају.

На пример, када се користи са функцијом IsMatch, ниска „Здраво“ се тачно подудара са обрасцем „Здраво“. Ни више ни мање. Ниска "здраво!" не одговара обрасцу због узвичника на крају и зато што је величина слова погрешна на слову „з“. (Погледајте MatchOptions за начине измене овог понашања.)

У језику обрасца одређени знакови су резервисани за посебне намене. Да бисте користили ове знакове, ставите префикс \ (лева коса црта) испред знака да бисте назначили да знак треба схватити дословно или користите један од унапред дефинисаних образаца описаних касније у овој теми. У овој табели су наведени посебни знакови:

Посебан знак Опис
. тачка
? знак питања
* звездица
+ plus
( ) заграде
[ ] угласте заграде
{ } витичастe заградe
^ карет
$ симбол за долар
| vертикална трака или канал
\ коса црта уназад

На пример, можете да се подударате са "Здраво?" помоћу обрасца "Здраво\?" са левом косом цртом пре знака питања.

Унапред дефинисани обрасци

Унапред дефинисани обрасци омогућавају једноставан начин за подударање било ког скупа знакова или низа више знакова. Користите оператор стринг-цонцатенатион & да комбинујете сопствене текстуалне низове са члановима Матцх енум:

Нумеричка Match Опис Регуларни израз
Било који Одговара било ком знаку. .
Зарез Подудара се са зарезом. ,
Цифра Подудара се са једном цифром (од „0“ до „9“). \d
Е-пошта Одговара адреси е-поште која садржи симбол „ет“ („@“) и назив домена који садржи тачку („.“) .+\@.+\\.[^\\.]{2,}
Цртица Подудара се са цртицом. \-
Српско-хрватски Подудара се са левом заградом „(“. \(
Писмо Подудара се са словом. \p{L}
МултиплеДигитс Подудара се са једном или више цифара. \d+
МултиплеЛеттерс Подудара се са једним или више слова. \p{L}+
МултиплеНонСпацес Подудара се са једним или више знакова који не додају празан простор (а не размак, картицу или нови ред). \S+
МултиплеСпацес Подудара се са једним или више знакова који додају празан простор (размак, картицу или нови ред). \s+
Претраживање Подудара се са једним знаком који не додаје празан простор. \S
ОпционоЦифре Подудара се са нула, једном или више цифара. \d*
ОпционоПисма Подудара се са нула, једним или више слова. \p{L}*
ОпционоНонСпацес Подудара се са нула, једним или више знакова који не додају празан простор. \S*
ОпциониПростори Подудара се са нула, једним или више знакова који додају празан простор. \s*
Менструација Подудара се са тачком („.“). \.
ОМИЉЕНО Подудара се са десном заградом „)“. \)
Простора Одговара знаку који додаје празан простор. \s
Картици Поклапа се са знаком за табулацију. \t

На пример, образац "А" & МултиплеДигитс ће се подударати са словом "А" након чега следи једна или више цифара.

Регуларни изрази

Образац који ове функције користе је а регуларни израз. Обични знакови и унапред дефинисани обрасци који су описани раније у овој теми помажу у изградњи регуларних израза.

Редовни изрази су веома моћни, доступни су у многим програмским језицима, а користе се у најразличитије сврхе. Такође могу често изгледати као случајни низ интерпункцијских знакова. Овај чланак не описује све аспекте регуларних израза, али на интернету је доступно мноштво информација, водича и алатки.

Регуларни изрази долазе у различитим дијалектима, а Power Apps користи варијанту JavaScript дијалекта. Погледајте синтакса регуларног израза за увод у синтаксу. Подржана су подударања мањег нивоа (којА се понекад називају и именоване групе за хватање):

  • Именована подударања мањег нивоа: (?<name> ...)
  • Именоване повратне референце: \k<name>

У нумеричкој табели Match раније у овој теми, свака нумеричка вредност се појављује у истом реду као и одговарајући регуларни израз.

Опције подударања

Можете да измените понашање ових функција тако што ћете одредити једну или више опција, које можете комбиновати помоћу оператора стринг-цонцатенатион ( & ).

Нумерички MatchOptions Опис Утицај на регуларни израз.
МатцхОптионс.БегинсВитх Образац се мора подударати од почетка текста. Додаје ^ на почетак регуларног израза.
МатцхОптионс.Цомплете Подразумевано за IsMatch. Образац се мора подударати са целом ниском текста, од почетка до краја. Додаје ^ на почетак, а $ на крај регуларног израза.
МатцхОптионс.Цонтаинс Подразумевано за Match и MatchAll. Образац се мора појавити негде у тексту, али не треба га започињати или завршавати. Не мења регуларни израз.
МатцхОптионс.ЕндсВитх Образац се мора подударати са крајем ниске текста. Додаје $ на крај регуларног израза.
МатцхОптионс.ИгнореЦасе Велика и мала слова третира као идентична. Подразумевано је подударање осетљиво на велика и мала слова. Не мења регуларни израз. Ова опција је еквивалент стандардном „i“ модификатору регуларних израза.
МатцхОптионс.Мултилине Подудара се у више линија. Не мења регуларни израз. Ова опција је еквивалент стандардном „m“ модификатору регуларних израза.

Коришћење MatchAll је еквивалентно коришћењу стандардног „g“ модификатора за регуларне изразе.

Синтакса

ИсМатцх ( текст , образац [ , опције ] )

  • Текст – Обавезно. Ниска текста за тестирање.
  • Образац – Обавезно. Образац за тестирање као текстуална ниска. Повежите унапред дефинисане обрасце који нумеричка вредност Match дефинише, или обезбедите правилан израз. Образац мора бити константна формула без икаквих варијабли, извора података или других динамичких референци које се мењају док се апликација покреће.
  • Опције – Опционо. Комбинација текстуалне ниске од нумеричких MatchOptions вредности. Подразумевано, MatchOptions.Complete се користи.

Подударање ( текст , образац [ , опције ] )

  • Текст – Обавезно. Ниска текста за подударање.
  • Образац – Обавезно. Образац за подударање као текстуална ниска. Повежите унапред дефинисане обрасце који нумеричка вредност Match дефинише, или обезбедите правилан израз. Образац мора бити константна формула без икаквих варијабли, извора података или других динамичких референци које се мењају док се апликација покреће.
  • Опције – Опционо. Комбинација текстуалне ниске од нумеричких MatchOptions вредности. Подразумевано, MatchOptions.Contains се користи.

МатцхАлл ( текст , образац [ , опције ] )

  • Текст – Обавезно. Ниска текста за подударање.
  • Образац – Обавезно. Образац за подударање као текстуална ниска. Повежите унапред дефинисане обрасце који нумеричка вредност Match дефинише, или обезбедите правилан израз. Образац мора бити константна формула без икаквих варијабли, извора података или других динамичких референци које се мењају док се апликација покреће.
  • Опције – Опционо. Комбинација текстуалне ниске од нумеричких MatchOptions вредности. Подразумевано, MatchOptions.Contains се користи.

IsMatch примери

Обични знакови

Замислите да ваша апликација садржи контролу Унос текста названу TextInput1. Корисник уноси контроле у ову контролу која се чува у бази података.

Корисника куца Здраво свима у TextInput1.

Формула Опис Резултат
IsMatch( TextInput1.Text, "Hello world" ) Тестира да ли се унос корисника тачно подудара са ниском „Здраво свима“. Истина
IsMatch( TextInput1.Text, "Good bye" ) Тестира да ли се унос корисника тачно подудара са ниском „Довиђења“. лажан
IsMatch( TextInput1.Text, "hello", Contains ) Испитује да ли корисников унос садржи реч „здраво“ (осетљива на велика и мала слова). лажан
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Испитује да ли корисников унос садржи реч „здраво“ (није осетљива на велика и мала слова). Истина

Унапред дефинисани обрасци

Формула Опис Резултат
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Подудара се са бројем здравственог осигурања Сједињених Држава Истина
IsMatch( "joan@contoso.com", Email ) Подудара се са е-адресом Истина
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Подудара се са низом цифара, тачке, а затим нуле или више цифара. Истина
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Подудара се са низом цифара, тачке, а затим нуле или више цифара. У тексту се не појављује тачка која треба да се подудара, тако да се овај образац не подудара. лажан

Регуларни изрази

Формула Опис Резултат
IsMatch( "986", "\d+" ) Подудара се са целим бројем већим од нуле. Истина
IsMatch( "1.02", "\d+(\.\d\d)?" ) Подудара се са позитивним износом валуте. Ако улаз садржи децималну тачку, унос мора да садржи и два нумеричка знака након децималне тачке. На пример, 3,00 је валидно, али 3,1 није. Истина
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Подудара се са позитивним или негативним износом валуте. Ако улаз садржи децималну тачку, унос мора да садржи и два нумеричка знака након децималне тачке. Истина
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Подудара се са бројем здравственог осигурања Сједињених Држава. Проверава формат, тип и дужину наведеног поља за унос. Ниска која се подудара мора се састојати од три нумеричка знака, након којих следи цртица, затим два нумеричка знака, након којих слиједи цртица, а затим четири нумеричка знака. Истина
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Исто као у претходном примеру, али једна од цртица није на месту у пољу. лажан
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Потврђује ваљаност јаке лозинке која мора садржати осам, девет или 10 знакова, поред најмање једне цифре и најмање једног абецедног знака. Ниска не сме да садржи специјалне знакове. лажан

Примери Match и MatchAll

Формула Опис Резултат
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" Издваја само део е-поште из података о контактима. {
email: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
SubMatches: [ "bob.jones@contoso.com" ],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Издваја само део е-поште из података о контактима. Није пронађена ниједна законска адреса (нема знака @), па функција враћа blank. Празно
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Издваја делове језика, скрипте и региона ознаке за језик, коју функција Language враћа. Ови резултати одражавају Сједињене Државе; погледајте документацију функције Language за више примера. Оператер (?: групише знакове без креирања другог подударања мањег нивоа. {
language: "en",
script: blank,
region: "US",
FullMatch: "en-US",
SubMatches: [ "en", "", "US" ],
StartMatch: 1
}
Match( "PT2H1M39S", "PT(?:<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) Извлачи сате, минуте и секунде из ISO 8601 вредности трајања. Издвојени бројеви су још увек у текстуалној ниски; користите функцију Value да их претворите у број пре него што се на њему изврше математичке операције. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2“,"1“,"39“],
StartMatch: 1
}

Хајде да дубински прегледамо последњи пример. Ако сте желели да претворите ову ниску у вредност датум/време помоћу функције Time, морате да проследите подударања мањег нивоа појединачно. Да бисте ово урадили, можете да користите функцију With функција која ради на запису коју враћа Match:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
   Time( Value( hours ), Value( minutes ), Value( seconds ) )
)

За ове примере додајте контролу Дугме, поставите њено својство OnSelect према овој формули, а затим изаберите дугме:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Формула Опис Резултат
Match( pangram, "THE", IgnoreCase ) Пронађите сва подударања од „THE“ у текстуалној ниски коју садржи променљива pangram. Ниска садржи два подударања, али само прво се враћа јер користите Match, а не MatchAll. Колона SubMatches је празна јер нису дефинисана подударања мањег нивоа. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) Пронађите сва подударања од „the“ у текстуалној ниски коју садржи променљива pangram. Тест разликује велика и мала слова, тако да је пронађена само друга инстанца од „the“. Колона SubMatches је празна јер нису дефинисана подударања мањег нивоа. MatchAll за панграм.
MatchAll( pangram, "the", IgnoreCase ) Пронађите сва подударања од „the“ у текстуалној ниски коју садржи променљива pangram. У овом случају, тест није осетљив на велика и мала слова, тако да су обе инстанце речи пронађене. Колона SubMatches је празна јер нису дефинисана подударања мањег нивоа. MatchAll са IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) Проналази све речи од три слова које имају „о“ у средини. Имајте на уму да је „смеђа“ искључена јер није реч са три слова, а према томе се не подудара са „\b“ (граница речи). MatchAll за панграм са b, wo, w и b.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Подудара се са свим знацима између „лисице“ и „пса“. {
between: "скаче преко успаваног",
FullMatch: "лисица скаче преко успаваног пса",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

Да бисте видели резултате MatchAll у галерији:

  1. На празном екрану уметните празну вертикалну контролу Галерија.

  2. Подесите својство Items галерије као MatchAll( pangram, "\w+" ) или MatchAll( pangram, MultipleLetters ).

    Галерија ставки.

  3. Изаберите „Додајте ставку са картице Уметање“ на средини контроле галерије за одабир предлошка галерије:

  4. Додајте контролу Ознака у предложак галерије.

  5. Подесите својство Текст ознаке на ThisItem.FullMatch.

    Галерија је испуњена сваком речју у нашем примеру текста. Промените величину предлошка галерије и контроле налепнице како бисте видели све речи на једном екрану.

    Својство Text.