Бөлісу құралы:


IsMatch, Match және MatchAll функциялары

Қолданылады: Canvas apps Model-Driven apps Power Platform CLI

Сәйкестікті тексереді немесе үлгіге негізделіп мәтін жолының бөліктерін шығарып алады.

Сипаттама

IsMatch функциясы мәтін жолы кәдімгі таңбаларды, алдын ала анықталған үлгілерді немесе тұрақты өрнекті қамтуы мүмкін үлгіге сәйкес пе, соны тексереді. Match және MatchAll функциялары сәйкес келгендерді, соның ішінде ішкі сәйкестіктерді қайтарады.

IsMatch функциясын пайдаланушы Text input басқару элементінде не енгізгенін тексеру үшін пайдаланыңыз. Мысалы, нәтиже деректер көзіне сақталмай тұрып пайдаланушы жарамды электрондық пошта мекенжайын енгізгенін тексеруге болады. Ешбір жазба шарттарға сай болмаса, пайдаланушыдан енгізгенін түзетуді сұрайтын басқа басқару элементтерін қосыңыз.

Match функциясын үлгіге сәйкес бірінші мәтін жолын шығарып алу үшін, ал MatchAll функциясын сәйкес барлық мәтін жолдарын шығарып алу үшін пайдаланыңыз. Сондай-ақ күрделі жолдарды талдау үшін ішкі сәйкестіктерді шығарып алуға болады.

Match функциясы бірінші табылған сәйкестік үшін ақпарат жазбасын қайтарады, ал MatchAll функциясы әрбір табылған сәйкестік үшін жазбалар кестесін қайтарады. Жазба немесе жазбалар мыналарды қамтиды:

Column Түр Сипаттама
named sub‑match or sub‑matches Мәтін Әр аталған ішкі сәйкестіктің өзінің бағаны болады. Аталған сәйкестікті тұрақты өрнекте (?<name>...) пайдалана отырып жасаңыз. Аталған ішкі сәйкестіктің атауы алдын ала анықталған бағандардыкімен (төменде) бірдей болса, ішкі сәйкестік басым болады және ескерту жасалады. Бұл ескертуді болдырмау үшін ішкі сәйкестікті қайта атаңыз.
FullMatch Мәтін Сәйкес болған бүкіл мәтін жолы.
StartMatch Нөмірі Мәтінді енгізу жолы ішіндегі сәйкестіктің бастапқы орны. Жолдың бірінші таңбасы 1 мәнін қайтарады.
SubMatches Мәтіннің бір бағандық кестесі (Value бағаны) Тұрақты өрнекте көрінетін ретпен орналасқан аталған және аталмаған ішкі сәйкестіктер кестесі. Әдетте, ішкі сәйкестіктердің атауларымен жұмыс істеу оңайырақ және бұл ұсынылады. Жеке ішкі сәйкестікпен жұмыс істеу үшін ForAll функциясын немесе Last( FirstN( ... ) ) функцияларын пайдаланыңыз. Тұрақты өрнекте ішкі сәйкестіктер анықталмаса, бұл кесте бар, бірақ бос болады.

Бұл функциялар MatchOptions қолдайды. Әдепкі бойынша:

  • Бұл функциялар регистрді ескеретін сәйкестікті анықтауды орындайды. Кейс-сезімтал сәйкестіктерді орындау үшін MatchOptions.Елемеуді пайдаланыңыз .
  • IsMatch функциясы бүкіл мәтін жолының сәйкестігін анықтайды (Complete MatchOption), ал Match және MatchAll функциялары мтәін жолының кез келген жерінде сәйкестікті іздейді (Contains MatchOption). Complete, Contains, BeginsWith немесе EndsWith сценарий үшін тиіс кезде пайдаланыңыз.

Мәтін жолы үлгіге сәйкес болса немесе false мәні жоқ болса, IsMatch функциясы true мәнін қайтарады. IsBlank функциясымен тексеруге болатын сәйкестік табылмаса, Match функциясы blank мәнін қайтарады. IsEmpty функциясымен тексеруге болатын сәйкестік табылмаса, MatchAll функциясы бос кестені қайтарады.

Мәтін жолын бөлу үшін MatchAll функциясын пайдаланып жатсаңыз, пайдалану оңайырақ және тезірек Split функциясын пайдалануды қарастырыңыз.

Үлгілер

Бұл функцияларды пайдаланудың кілті — сәйкестігі анықталатын өрнекті сипаттау. Мәтін жолында үлгіні мыналардың тіркесімі түрінде сипаттауға болады:

  • Кәдімгі таңбалар, мысалы, "abc" немесе "123".
  • Letter, MultipleDigits немесе Email сияқты алдын ала анықталған үлгілер. (Match санамалауы осы үлгілерді анықтайды).
  • "\d+\s+\d+" немесе "[a-z]+" сияқты тұрақты өрнек кодтары.

Бұл элементтерді string-concateination операторын пайдалану арқылы біріктіру. Мысалы, "abc" & "\s+" - "а", "b", және "c" таңбаларына сәйкес келетін жарамды үлгі, одан кейін 0-ден 9-ға дейінгі сан, одан кейін кемінде бір ақ кеңістік таңбасы.

Кәдімгі таңбалар

Ең оңай үлгі — дәл сәйкестігін анықтау керек кәдімгі таңбалардың реті.

Мысалы, IsMatch функциясымен бірге пайдаланғанда, "Hello" жолы "Hello" үлгісіне дәл сәйкес келеді. Көбірек емес және азырақ емес. "hello!" жолы бұл үлгіге сәйкес емес, өйткені соңында леп белгісі бар және "h" әрпінің регистрі дұрыс емес. (Бұл мінез-құлықты өзгерту жолдарын MatchOptions бөлімінен қараңыз).

Үлгі тілінде белгілі бір таңбалар арнайы мақсаттарға сақталған. Бұл таңбаларды пайдалану үшін таңбаны сөзбе-сөз түсіну керек екенін көрсету үшін таңба алдына префикс \ (кері қиғаш сызық) қойыңыз немесе осы тақырыпта кейінірек сипатталған алдын ала анықталған үлгілердің біреуін пайдаланыңыз. Бұл кестеде арнайы таңбалар тізілген:

Арнайы таңба Сипаттама
. нүкте
? сұрақ белгісі
* жұлдызша
+ плюс
( ) жақша
[ ] шаршы жақшалар
{ } ирек жақшалар
^ қақпақ белгісі
$ доллар белгісі
| тік жолақ немесе құбыр
\ кері қиғаш сызық

Мысалы, "Hello?" жолын сұрақ белгісінің алдында кері қиғаш сызығы бар "Hello\?" үлгісін қолдану арқылы сәйкестендіруге болады.

Алдын ала анықталған үлгілер

Алдын ала анықталған үлгілер таңбалар жиынының немесе бірнеше таңба ретінің біреуінің сәйкестігін анықтаудың қарапайым жолын қамтамасыз етеді. Өз мәтін жолдарын Match enum мүшелерімен біріктіру үшін ішекті конкатациялық операторды пайдаланыңыз :

Match санамалауы Сипаттама Тұрақты өрнек
Any Кез келген таңба сәйкестігін анықтайды. .
Comma Үтір сәйкестігін анықтайды. ,
Digit Бір цифрдың ("0" - "9" аралығында) сәйкестігін анықтайды. \d
Email "@" таңбасын ("@") қамтитын электрондық пошта мекенжайы және нүктені (".") қамтитын домен атауы сәйкестігін анықтайды .+\@.+\\.[^\\.]{2,}
Hyphen Сызықша сәйкестігін анықтайды. \-
LeftParen Сол жақ жақша "(" сәйкестігін анықтайды. \(
Letter Әріп сәйкестігін анықтайды. \p{L}
MultipleDigits Бір немесе бірнеше цифр сәйкестігін анықтайды. \d+
MultipleLetters Бір немесе бірнеше әріп сәйкестігін анықтайды. \p{L}+
MultipleNonSpaces Бос орынды (жолдағы бос орын, tab немесе жаңа жол емес) қоспайтын бір немесе бірнеше таңба сәйкестігін анықтайды. \S+
MultipleSpaces Бос орынды (жолдағы бос орын, tab немесе жаңа жол) қосатын бір немесе бірнеше таңба сәйкестігін анықтайды. \s+
NonSpace Бос орынды қоспайтын бір таңба сәйкестігін анықтайды. \S
OptionalDigits Нөл, бір немесе бірнеше цифр сәйкестігін анықтайды. \d*
OptionalLetters Нөл, бір немесе бірнеше әріп сәйкестігін анықтайды. \p{L}*
OptionalNonSpaces Бос орынды (жолдағы бос орын, tab немесе жаңа жол) қоспайтын нөл, бір немесе бірнеше таңба сәйкестігін анықтайды. \S*
OptionalSpaces Бос орынды қосатын нөл, бір немесе бірнеше таңба сәйкестігін анықтайды. \s*
Period Нүкте (".") сәйкестігін анықтайды. \.
RightParen Оң жақша ")" сәйкестігін анықтайды. \)
Space Бос орынды қосатын таңба сәйкестігін анықтайды. \s
Tab Қойынша таңбасына сәйкес келеді. \t

Мысалы, "А" - "Мультипликативтік " деген үлгі "А" әрпіне, кейін бір немесе бірнеше санға сәйкес келеді.

Тұрақты өрнектер

Бұл функциялар пайдаланатын үлгі — тұрақты өрнек. Осы тақырыптың алдыңғы жағында сипатталған кәдімгі таңбалар мен алдын ала анықталған үлгілер тұрақты өрнектерді жасауға көмектеседі.

Тұрақты өрнектер өте қуатты, көп бағдарламалау тілдерінде қолжетімді және мақсаттардың кең ауқымы үшін пайдаланылады. Сондай-ақ олар көбінесе тыныс белгілерінің кездейсоқ реті сияқты көрінеді. Бұл мақалада тұрақты өрнектердің барлық аспектілері сипатталмаған, бірақ интернетте көп ақпарат, туториалдар және құралдар қолжетімді.

Тұрақты өрнектердің әртүрлі диалекттері болады және Power Apps бағдарламасы JavaScript диалектісінің бір нұсқасын пайдаланады. Синтаксиске кіріспені тұрақты өрнек синтаксисі бөлімін қараңыз. Аталған ішкі сәйкестіктерге (кейде аталған жазу топтары деп аталады) қолдау көрсетіледі:

  • Аталған ішкі сәйкестіктер: (?<name> ...)
  • Аталған кері сілтемелер: \k<name>

Осы тақырыптың ертерек бөлігіндегі Match санамалау кестесінде әр санамалау сәйкес тұрақты өрнегімен бірдей жолда орналасады.

Сәйкестік опциялары

Бұл функциялардың мінез-құлқын бір немесе бірнеше параметрлерді көрсету арқылы өзгертуге болады, оны ішекті - конкатенттеу операторын (>) пайдалану арқылы біріктіруге болады.

MatchOptions санамалау Сипаттама Тұрақты өрнекке әсер
MatchOptions.BeginsWith Үлгі мәтіннің басынан бастап сәйкес болуы керек. Тұрақты өрнектің басына ^ қосады.
MatchOptions. Толық IsMatch үшін әдепкі. Бұл үлгі бүкіл мәтін жолына, басынан соңына дейін сәйкес болуы керек. Тұрақты өрнектің басына ^ және соңына $ қосады.
MatchOptions.Құрамында бар Match және MatchAll үшін әдепкі. Үлгі мәтіннің бір жерінде болуы керек, бірақ оны бастауы немесе аяқтауы қажет емес. Тұрақты өрнекті өзгертпейді.
MatchOptions.EndsWith Үлгі мәтін жолының соңына сәйкес болуы керек. Тұрақты өрнектің соңына $ қосады.
MatchOptions.Елемеу Жоғарғы регистрдегі және төменгі регистрдегі әріптер бірдей деп есептеледі. Әдепкі бойынша, сәйкестікті табуда регистр ескеріледі. Тұрақты өрнекті өзгертпейді. Бұл опция — тұрақты өрнектерге арналған стандартты «i» модификаторының баламасы.
MatchOptions.Көп сызықты Бірнеше жолда сәйкестікті анықтайды. Тұрақты өрнекті өзгертпейді. Бұл опция — тұрақты өрнектерге арналған стандартты «m» модификаторының баламасы.

MatchAll функциясын пайдалану тұрақты өрнектер үшін стандартты "g" модификаторын пайдаланудың баламасы болып табылады.

Синтаксис

IsMatch( Text, Pattern [, Options ] )

  • Text – Міндетті. Тексеретін мәтін жолы.
  • Pattern – Міндетті. Мәтін жолы ретінде тексеретін үлгі. Match санамалауы анықтайтын алдын ала анықталған үлгілерді біріктіреді және тұрақты өрнекті қамтамасыз етеді. Үлгі бағдарлама жұмыс істегенде өзгеретін ешбір айнымалыларды, деректер көздерін немесе басқа динамикалық сілтемелерді қамтымайтын тұрақты формула болуы керек.
  • Options – Міндетті емес. MatchOptions санамалауы мәндерінің мәтін жолы тіркесімі. Әдепкі бойынша, MatchOptions.Complete пайдаланылады.

Match( Text, Pattern [, Options ] )

  • Text – Міндетті. Сәйкестігін анықтайтын мәтін жолы.
  • Pattern – Міндетті. Мәтін жолы ретінде сәйкестігін анықтайтын үлгі. Match санамалауы анықтайтын алдын ала анықталған үлгілерді біріктіреді және тұрақты өрнекті қамтамасыз етеді. Үлгі бағдарлама жұмыс істегенде өзгеретін ешбір айнымалыларды, деректер көздерін немесе басқа динамикалық сілтемелерді қамтымайтын тұрақты формула болуы керек.
  • Options – Міндетті емес. MatchOptions санамалауы мәндерінің мәтін жолы тіркесімі. Әдепкі бойынша, MatchOptions.Contains пайдаланылады.

MatchAll( Text, Pattern [, Options ] )

  • Text – Міндетті. Сәйкестігін анықтайтын мәтін жолы.
  • Pattern – Міндетті. Мәтін жолы ретінде сәйкестігін анықтайтын үлгі. Match санамалауы анықтайтын алдын ала анықталған үлгілерді біріктіреді және тұрақты өрнекті қамтамасыз етеді. Үлгі бағдарлама жұмыс істегенде өзгеретін ешбір айнымалыларды, деректер көздерін немесе басқа динамикалық сілтемелерді қамтымайтын тұрақты формула болуы керек.
  • Options – Міндетті емес. MatchOptions санамалауы мәндерінің мәтін жолы тіркесімі. Әдепкі бойынша, MatchOptions.Contains пайдаланылады.

IsMatch мысалдары

Кәдімгі таңбалар

Бағдарламаңыз TextInput1 атты Мәтінді енгізу басқару элементін қамтиды деп елестетейік. Пайдаланушы осы басқару элементіне дерекқорда сақталатын мәндерді енгізеді.

Пайдаланушы TextInput1 ішіне Hello world сөздерін тереді.

Формула Сипаттама Нәтиже
IsMatch( TextInput1.Text, "Hello world" ) Пайдаланушының енгізілімі "Hello world" жолына дәл сәйкес келетінін тексереді. true
IsMatch( TextInput1.Text, "Good bye" ) Пайдаланушының енгізілімі "Good bye" жолына дәл сәйкес келетінін тексереді. false
IsMatch( TextInput1.Text, "hello", Contains ) Пайдаланушының енгізілімінде "hello" сөзі бар-жоғын тексереді (регистрді ескереді). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Пайдаланушының енгізілімінде "hello" сөзі бар-жоғын тексереді (регистрді ескермейді). true

Алдын ала анықталған үлгілер

Формула Сипаттама Нәтиже
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Америка Құрама Штаттарындағы Әлеуметтік қауіпсіздік нөмірінің сәйкестігін анықтайды true
IsMatch( "joan@contoso.com", Email ) Электрондық пошта мекенжайының сәйкестігін анықтайды true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Цифрлар, нүкте, содан кейін нөл немесе қосымша цифр ретінің сәйкестігін анықтайды. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Цифрлар, нүкте, содан кейін нөл немесе қосымша цифр ретінің сәйкестігін анықтайды. Мәтінде сәйкестігін анықтайтын нүкте жоқ, сондықтан бұл үлгі сәйкестігі анықталмайды. false

Тұрақты өрнектер

Формула Сипаттама Нәтиже
IsMatch( "986", "\d+" ) Нөлден үлкенірек бүтін сан сәйкестігін анықтайды. true
IsMatch( "1.02", "\d+(\.\d\d)?" ) Оң валюта сомасы сәйкестігін анықтайды. Енгізілім ондық белгіні қамтыса, енгізілім ондық белгіден кейін екі сандық таңбаны да қамтуы керек. Мысалы, 3,00 жарамды, бірақ 3,1 жарамды емес. true
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Оң немесе теріс валюта сомасы сәйкестігін анықтайды. Енгізілім ондық белгіні қамтыса, енгізілім ондық белгіден кейін екі сандық таңбаны да қамтуы керек. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Америка Құрама Штаттарындағы Әлеуметтік қауіпсіздік нөмірінің сәйкестігін анықтайды. Берілген енгізу өрісінің пішімін, түрін және ұзындығын тексереді. Сәйкестігін анықтайтын жол үш сандық таңбадан, одан кейін сызықшадан, содан кейін екі сандық таңбадан, содан кейін сызықшадан, содан кейін төрт сандық таңбадан тұруы керек. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Алдыңғы мысалмен бірдей, бірақ енгізілімде сызықшалардың біреуі орнында емес. false
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Күшті құпиясөзді тексереді. Күшті құпиясөз кемінде бір цифрға және кемінде бір әліпбилік таңбаға қоса, сегіз, тоғыз немесе 10 таңбаны қамтуы керек. Жол арнайы таңбаларды қамтымауы керек. false

Match және MatchAll мысалдары

Формула Сипаттама Нәтиже
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.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 функциясы арқылы күн/уақыт мәніне түрлендіргіңіз келсе, аталған ішкі сәйкестіктерді жеке-жеке өткізу керек. Мұны істеу үшін Match қайтаратын жазбаға қатысты әрекет орындайтын With функциясын пайдалануға болады:

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

Осы мысалдар үшін Button басқару элементін қосыңыз, оның OnSelect сипатын мына формулаға орнатыңыз, содан кейін түймешікті таңдаңыз:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Формула Сипаттама Нәтиже
Match( pangram, "THE", IgnoreCase ) pangram айнымалысы қамтитын мәтін жолындағы "THE" сөзінің барлық сәйкестіктерін табады. Жол екі сәйкестікткі қамтиды, бірақ тек біріншісі қайтарылады, өйткені сіз MatchAll емес, Match функциясын пайдаланудасыз. SubMatches бағаны бос, өйткені ішкі сәйкестіктер анықталмаған. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) pangram айнымалысы қамтитын мәтін жолындағы "the" сөзінің барлық сәйкестіктерін табады. Тексеру регистрді ескереді, сондықтан "the" сөзінің екінші данасы ғана табылады. SubMatches бағаны бос, өйткені ішкі сәйкестіктер анықталмаған. Панграммаға арналған MatchAll.
MatchAll( pangram, "the", IgnoreCase ) pangram айнымалысы қамтитын мәтін жолындағы "the" сөзінің барлық сәйкестіктерін табады. Бұл жағдайда тексеру регистрді ескермейді, сондықтан сөздің екі данасы да табылады. SubMatches бағаны бос, өйткені ішкі сәйкестіктер анықталмаған. IgnoreCase көмегімен MatchAll.
MatchAll( pangram, "\b\wo\w\b" ) Ортасында "o" әрпі бар үш әріпті сөздердің барлығын табады. "brown" сөзі қосылмайтынын ескеріңіз, өйткені ол үш әріптік сөз емес, сондықтан "\b" (сөз шегі) сәйкес келмейді. B, wo, w және b әріптері бар панграммаға арналған MatchAll.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) "fox" және "dog" арасындағы барлық таңбаның сәйкестігін анықтайды. {
between: "jumps over the lazy",
FullMatch: "fox jumps over the lazy dog",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

MatchAll нәтижелерін галереяда көру үшін:

  1. Бос экранда бос тік Gallery басқару элементін кірістіріңіз.

  2. Галереяның Элементтер сипатын MatchAll( pangram, "\w+" ) немесе MatchAll( pangram, MultipleLetters ) деп орнатыңыз.

    Элементтер галереясы.

  3. Галерея үлгісін таңдау үшін галерея басқару элементінің ортасында ""Кірістіру" қойыншасынан элемент қосу" пәрменін таңдаңыз.

  4. Галерея үлгісіне Белгі басқару элементін қосыңыз.

  5. Белгінің Мәтін сипатын ThisItem.FullMatch деп орнатыңыз.

    Галерея мысал мәтіндегі әрбір сөзбен толтырылады. Барлық сөзді бір экранда көру үшін галерея үлгісінің және белгі басқару элементінің өлшемін өзгертіңіз.

    Мәтін сипаты.