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


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

Қолданылады: Canvas қолданбалары Үлгіге негізделген қолданбалар Power Pages Power Platform CLI

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

Сипаттама

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

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

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

Сәйкестік табылған бірінші сәйкестік үшін ақпарат жазбасын қайтарады және MatchAll табылған әрбір сәйкестік үшін жазбалар кестесін қайтарады. Жазба немесе жазбалар мыналарды қамтиды:

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

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

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

IsMatch мәтін жолы үлгіге сәйкес келсе true қайтарады немесе жалған қайтады. 't. Сәйкестік қайтарады бос егер IsBlank арқылы тексеруге болатын сәйкестік табылмаса функциясы. MatchAllIsEmpty функциясымен тексеруге болатын сәйкестік табылмаса, бос кестені қайтарады.

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

Үлгілер

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

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

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

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

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

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

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

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

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

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

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

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

Мысалы, үлгі "A" & MultipleDigits бір немесе бірнеше цифрдан кейінгі "A" әрпіне сәйкес келеді.

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

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

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

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

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

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

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

Жолды біріктіру операторын (&) пайдалану арқылы біріктіруге болатын бір немесе бірнеше опцияларды көрсету арқылы осы функциялардың әрекетін өзгертуге болады.

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

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

Синтаксис

IsMatch( Мәтін, Үлгі [, Параметрлер ])

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

Сәйкестік( Мәтін, Үлгі [, Параметрлер ])

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

MatchAll( Мәтін, Үлгі [, Параметрлер ])

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

IsMatch мысалдары

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

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

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

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

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

Формула Сипаттама Нәтиже
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 & ")>" Байланыс ақпаратының электрондық пошта бөлігін ғана шығарып алады. {
электрондық пошта: "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 деп орнатыңыз.

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

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