IsMatch, Match ve MatchAll işlevleri

Şunlar için geçerlidir: Tuval uygulamaları Model temelli uygulamalar Power Platform CLI

Bir deseni temel alarak bir eşleşmeyi test eder için veya bir metin dizesinin bölümlerini ayıklar.

Açıklama

IsMatch işlevi bir metin dizesinin normal karakterlerden, önceden tanımlanmış desenlerden veya normal ifadeden oluşabilecek bir desenle eşleşip eşleşmediğini test eder. Match ve MatchAll işlevleri, alt eşleşmeler de dahil olmak üzere, eşleştirmeyi döndürür.

Bir kullanıcının Text input denetimine yazdıklarını doğrulamak için IsMatch işlevini kullanın. Örneğin, sonuç, veri kaynağınıza kaydedilmeden önce kullanıcının geçerli bir e-posta adresi girip girmediğini doğrulayabilirsiniz. Giriş, ölçütlerinizle eşleşmiyorsa kullanıcının girişi düzeltmesini isteyen başka denetimler ekleyebilirsiniz.

Match işlevini bir desenle eşleşen ilk metin dizesini çıkartmak ve MatchAll işlevini eşleşen tüm metin dizelerini çıkartmak için kullanın. Ayrıca karmaşık dizgileri ayrıştırmak için alt eşleşmeleri ayıklayabilirsiniz.

Match, bulunan ilk eşleşme için bir bilgi kaydı döndürür ve MatchAll bulunan her eşleştirme için bir kayıt tablosu döndürür. Kayıt veya kayıtlar şunları içerir:

Column Türü Tanım
adlandırılmış alteşleme veya alteşlemeler Metin Her adlandırılan alt eşleşmenin kendi sütunu olur. Normal ifadede (?<adı>...) kullanarak adlandırılmış alt eşleştirmeyi bulun. Adlandırılmış bir alt eşleşmenin adı önceden tanımlanmış sütunlardan (aşağıda) biriyle aynı ada sahipse, alt eşleşme önceliklidir ve bir uyarı üretilir. Bu uyarıyı önlemek için alt eşleşmeyi yeniden adlandırın.
FullMatch Metin Eşleşen tüm metin dizesi.
StartMatch Numara Giriş metin dizesindeki eşleşmenin başlangıç konumu. Dizenin ilk karakteri 1 döndürür.
SubMatches Metnin tek sütunlu tablosu (sütun Değer) Adlandırılmış ve adlandırılmamış alt eşleşmelerin tablosu, normal ifadede göründükleri sırada. Genellikle, adlandırılmış alt eşleşmeler ile birlikte çalışmak daha kolaydır ve önerilir. Tek bir alt eşleşmeyle çalışmak için ForAll işlevini veya Last( FirstN( ... ) ) işlevlerini kullanın. Normal ifadede tanımlanmış alt eşleşmeler yoksa, bu tablo gösterilir ancak boştur.

Bu işlevler MatchOptions'ı destekler. Varsayılan olarak:

  • Bu işlevler, büyük/küçük harf duyarlı eşleşme gerçekleştirirler. Büyük/küçük harfe duyarlı olmayan eşleşmeler gerçekleştirmek için MatchOptions.IgnoreCase kullanın.
  • IsMatch tam metin dizesini eşleştirir (Complete MatchOption); Match ve MatchAll ise metin dizesinde eşleşen bir bölüm arar (Contains MatchOption). Senaryonuza uygun şekilde Complete, Contains, BeginsWith veya EndsWith kullanın.

IsMatch, metin dizesi desenle eşleşiyorsa true, eşleşmiyorsa false döndürür. Match, IsBlank işleviyle test edilebilecek eşleşme bulamazsa blank değeri döndürür. MatchAll, IsEmpty işleviyle test edilebilecek eşleşme bulamazsa boş bir tablo döndürür.

Bir metin dizesini bölmek için MatchAll kullanıyorsanız, kullanımı daha kolay ve hızlı olan Split işlevini kullanmayı düşünebilirsiniz.

Desenler

Bu işlevlerin kullanımında en önemli nokta eşleşme gerçekleştirilecek desenin açıklamasıdır. Bir metin dizesindeki deseni aşağıdakilerin bir birleşimi olarak açıklayabilirsiniz:

  • "abc" veya "123" gibi normal karakterler.
  • Letter, MultipleDigits veya Email gibi önceden tanımlanmış desenler. (Match sabit listesi bu desenleri tanımlar.)
  • "\d+\s+\d+" veya "[a-z]+" gibi normal ifade kodları.

& dize birleştirme işlecini kullanarak bu öğeleri birleştirin. Örneğin, "abc" & Digit & "\s+" "a", "b" ve "c" karakterleri, ardından 0 ile 9 arasında bir rakam ve bundan sonra gelen en az bir boşluk karakteriyle eşleşen geçerli bir desendir.

Normal karakterler

En basit desen, tam eşleşme sağlayacak normal karakterlerden oluşan bir dizidir.

Örneğin, IsMatch işleviyle kullanıldığında, "Hello" dizesi tam olarak "Hello" deseniyle eşleşir. Bunun herhangi bir şekilde fazlasıyla ve daha küçük bir kısmıyla eşleşmez. "Hello!" dizesi sondaki ünlem işareti nedeniyle desenle eşleşmez ve "h" harfinin küçük yazılması yanlıştır. (Bu davranışı değiştirmenin yolları için bkz. MatchOptions.)

Desen dilinde belirli karakterler özel amaçlara yönelik olarak ayrılmıştır. Bu karakterleri kullanmak için, karakterin olduğu gibi alınması gerektiğini belirtmek üzere karakterin önüne bir \ (ters eğik çizgi) ekleyin veya önceden tanımlanmış desenlerden birini kullanın (bu konunun ilerleyen bölümünde açıklanmaktadır). Aşağıdaki tabloda özel karakterler listelenmektedir:

Özel karakter Tanım
. nokta
? soru işareti
* yıldız işareti
+ artı
( ) parantez
[ ] köşeli ayraç
{ } küme ayracı
^ şapka işareti
$ dolar işareti
| dikey çubuk veya şerit
\ ters eğik çizgi

Örneğin, "Hello\? desenini soru işaretinden önce ters eğik çizgi kullanarak "Hello?" ile eşleyebilirsiniz.

Önceden tanımlanmış desenler

Önceden tanımlanmış desenler bir karakter kümesi veya birden çok karakterden oluşan bir karakter dizisiyle eşleşme sağlamak için basit bir yol sunar. Kendi metin dizelerinizi Match sabit listesinin üyeleriyle birleştirmek için & dize birleştirme işlecini kullanın:

Match sabit listesi Açıklama Normal ifade
Any Herhangi bir karakterle eşleşir. .
Comma Virgül ile eşleşir. ,
Digit Tek bir rakam ("0" ila "9") ile eşleşir. \d
Email "at" simgesi ("@") içeren bir e-posta adresi ve nokta (".") içeren bir etki alanı adıyla eşleşir .+\@.+\\.[^\\.]{2,}
Hyphen Bir kısa çizgi ile eşleşir. \-
LeftParen Sol parantez "(" ile eşleşir. \(
Letter Bir harf ile eşleşir. \p{L}
MultipleDigits Bir veya birden çok rakamla eşleşir. \d+
MultipleLetters Bir veya birden çok harf ile eşleşir. \p{L}+
MultipleNonSpaces Beyaz boşluk (boşluk, sekme veya yeni satır değil) eklemeyen bir veya birden çok karakterle eşleşir. \S+
MultipleSpaces Boşluk (boşluk, sekme veya yeni satır) ekleyen bir veya birden çok karakterle eşleşir. \s+
NonSpace Boşluk eklemeyen tek bir karakter ile eşleşir. \S
OptionalDigits Sıfır, bir veya birden çok rakam ile eşleşir. \d*
OptionalLetters Sıfır, bir veya birden çok harf ile eşleşir. \p{L}*
OptionalNonSpaces Boşluk eklemeyen sıfır, bir veya birden çok karakterle eşleşir. \S*
OptionalSpaces Boşluk ekleyen sıfır, bir veya birden çok karakterle eşleşir. \s*
Period Bir nokta (".") ile eşleşir. \.
RightParen Sağ parantez ")" ile eşleşir. \)
Space Boşluk ekleyen bir karakterle eşleşir. \s
Tab Bir sekme karakteriyle eşleşir. \t

Örneğin, "A" & MultipleDigits deseni, sonrasında bir veya birden çok rakam bulunan "A" harfiyle eşleşir.

Normal ifadeler

Bu işlevlerin kullandığı desen normal bir ifadedir . Bu konunun önceki bölümlerinde açıklanan normal karakterler ve önceden tanımlanmış desenler normal ifadelerin oluşturulmasına yardımcı olur.

Normal ifadeler çok güçlüdür, çok sayıda programlama dilinde ve çeşitli amaçlarla kullanılabilir. Ayrıca, genellikle rastgele bir noktalama işaretleri dizisi gibi görünür. Bu makalede normal ifadelerin tüm özellikleri açıklanmamaktadır ancak web'de bulunan çok sayıda bilgi kaynağı, öğretici ve araç size yardımcı olabilir.

Normal ifadeler farklı diyalektlere sahiptir ve Power Apps çok sayıda JavaScript diyalekti kullanır. Sözdizimine giriş için normal ifade sözdizimine bakın. Adlandırılmış alt eşleşmeler (bazen adlandırılmış yakalama grupları olarak da adlandırılır) desteklenmektedir:

  • Adlandırılmış alt eşleşmeler: (? <ad> ...)
  • Adlandırılmış geri başvurular: \k<ad>

Bu konunun önceki bölümlerinde bulunan Match sabit listesi tablosunda, her sabit liste karşılık gelen normal ifadeyle aynı satırda görünür.

Eşleşme seçenekleri

Dize birleştirme (&) işlecini kullanarak birleştirebileceğiniz bir veya birden çok seçenek belirterek bu işlevlerin davranışını değiştirebilirsiniz.

MatchOptions sabit listesi Description Normal ifadeye etkisi
MatchOptions.BeginsWith Desen, metnin başıyla eşleşmelidir. Normal ifadenin başına ^ ekler.
MatchOptions.Complete IsMatch için varsayılan değerdir. Desen, başından sonuna kadar tüm metin dizesiyle eşleşmelidir. Normal ifadenin başına ^, sonuna ise $ ekler.
MatchOptions.Contains Match ve MatchAll için varsayılan değerdir. Desen metnin herhangi bir yerinde görünmelidir ancak başında veya sonunda olması gerekmez. Normal ifadeyi değiştirmez.
MatchOptions.EndsWith Desen, metin dizesinin sonuyla eşleşmelidir. Normal ifadenin sonuna $ ekler.
MatchOptions.IgnoreCase Büyük ve küçük harflere aynı olarak davranır. Varsayılan olarak eşleşme büyük/küçük harfe duyarlıdır. Normal ifadeyi değiştirmez. Bu seçenek, normal ifadelerin standart "i" değiştiricisine eşdeğerdir.
MatchOptions.Multiline Birden çok satırda eşleşme gerçekleştirir. Normal ifadeyi değiştirmez. Bu seçenek, normal ifadelerin standart "m" değiştiricisine eşdeğerdir.

MatchAll kullanımı, normal ifadelerde standart "g" değiştirici kullanmaya eşdeğerdir.

Sözdizimi

IsMatch( Metin, Desen [, Seçenekler ] )

  • Metin: Gerekli. Test edilecek metin dizesi.
  • Desen: Gerekli. Metin dizesi olarak test edilecek desen. Match sabit listesinin tanımladığı önceden tanımlanmış desenleri birleştirin veya normal ifade belirtin. Desen uygulama çalışırken değişen herhangi bir değişken, veri kaynağı veya başka dinamik başvuru içermeyen sabit bir formül olmalıdır.
  • Seçenekler: İsteğe bağlı. MatchOptions sabit listesi değerlerinin bir metin dizesi birleşimi. Varsayılan olarak MatchOptions.Complete kullanılır.

Match( Metin, Desen [, Seçenekler ] )

  • Metin: Gerekli. Eşleştirilecek metin dizesi.
  • Desen: Gerekli. Metin dizesi olarak eşleştirilecek desen. Match sabit listesinin tanımladığı önceden tanımlanmış desenleri birleştirin veya normal ifade belirtin. Desen uygulama çalışırken değişen herhangi bir değişken, veri kaynağı veya başka dinamik başvuru içermeyen sabit bir formül olmalıdır.
  • Seçenekler: İsteğe bağlı. MatchOptions sabit listesi değerlerinin bir metin dizesi birleşimi. Varsayılan olarak MatchOptions.Contains kullanılır.

MatchAll( Metin, Desen [, Seçenekler ] )

  • Metin: Gerekli. Eşleştirilecek metin dizesi.
  • Desen: Gerekli. Metin dizesi olarak eşleştirilecek desen. Match sabit listesinin tanımladığı önceden tanımlanmış desenleri birleştirin veya normal ifade belirtin. Desen uygulama çalışırken değişen herhangi bir değişken, veri kaynağı veya başka dinamik başvuru içermeyen sabit bir formül olmalıdır.
  • Seçenekler: İsteğe bağlı. MatchOptions sabit listesi değerlerinin bir metin dizesi birleşimi. Varsayılan olarak MatchOptions.Contains kullanılır.

IsMatch örnekleri

Normal karakterler

Uygulamanızın TextInput1 adında bir Text input denetimi içerdiğini varsayalım. Kullanıcı bu denetime veritabanında depolanacak değerler girer.

Kullanıcı TextInput1 için Hello world ifadesini girer.

Formül Açıklama Sonuç
IsMatch( TextInput1.Text, "Hello world" ) Kullanıcının girişinin tam olarak "Hello world" dizesiyle eşleşip eşleşmediğini test eder. true
IsMatch( TextInput1.Text, "Good bye" ) Kullanıcının girişinin tam olarak "Good bye" dizesiyle eşleşip eşleşmediğini test eder. false
IsMatch( TextInput1.Text, "hello", Contains ) Kullanıcının girişinin "hello" sözcüğünü içerip içermediğini (büyük/küçük harfe duyarlı) test eder. false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Kullanıcının girişinin "hello" sözcüğünü içerip içermediğini (büyük/küçük harfe duyarlı değil) test eder. true

Önceden tanımlanmış desenler

Formül Açıklama Sonuç
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) ABD Sosyal Güvenlik Numarası ile eşleşir true
IsMatch( "joan@contoso.com", Email ) Bir e-posta adresiyle eşleşir true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Bir dizi rakam, nokta ve ardından sıfır veya daha fazla rakam ile eşleşir. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Bir dizi rakam, nokta ve ardından sıfır veya daha fazla rakam ile eşleşir. Eşleştirilecek metinde nokta görünmediğinden bu desen eşleşmez. false

Normal ifadeler

Formül Açıklama Sonuç
IsMatch( "986", "\d+" ) Sıfırdan büyük bir tamsayıyla eşleşir. true
IsMatch( "1.02", "\d+(\.\d\d)?" ) Pozitif bir para birimi tutarıyla eşleşir. Giriş, ondalık ayırıcı içeriyorsa ondalık ayırıcıdan sonra iki sayısal karakter de içermelidir. Örneğin, 3,00 geçerlidir, ancak 3,1 değildir. true
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Pozitif veya negatif bir para birimi tutarıyla eşleşir. Giriş, ondalık ayırıcı içeriyorsa ondalık ayırıcıdan sonra iki sayısal karakter de içermelidir. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) ABD Sosyal Güvenlik numarası ile eşleşir. Sağlanan giriş alanının biçimini, türünü ve uzunluğunu doğrular. Eşleşme sağlanacak dize; sonrasında bir kısa çizgi bulunan üç sayısal karakter, ardından sonrasında bir kısa çizgi bulunan iki sayısal karakter ve bunun da ardından dört sayısal karakterden oluşmalıdır. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Bu, bir önceki örnekle aynıdır ancak girişteki kısa çizgilerden biri aynı yerde değildir. false
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Sekiz, dokuz veya 10 karakterin yanı sıra en az bir rakam ve en az bir alfabetik karakter içermesi gereken bir parolanın güvenlik düzeyini doğrular. Dize, özel karakter içermemelidir. false

Match ve MatchAll örnekleri

Formül Açıklama Sonuç
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" İlgili kişi bilgilerinin yalnızca e-posta kısmını ayıklar. {
e-posta: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
SubMatches: [ "bob.jones@contoso.com" ],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" İlgili kişi bilgilerinin yalnızca e-posta kısmını ayıklar. Geçerli bir adres bulunmadı (@ işareti yok), bu nedenle işlev blank değeri döndürür. blank
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Language işlevinin döndürdüğü dil etiketinin dil, betik ve bölge bölümlerini ayıklar. Bu sonuçlar Amerika Birleşik Devletleri'ni yansıtır; daha fazla örnek için bkz. Language işlevi belgeleri. (?: işleci, karakterleri başka bir alt eşleşme oluşturmadan gruplandırır. {
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 süresi değerinden saatleri, dakikaları ve saniyeleri ayıklar. Ayıklanan sayılar hala bir metin dizesindedir; üzerinde matematik işlemleri gerçekleştirilmeden önce değeri bir sayıya dönüştürmek için Value işlevini kullanın. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2","1","39"],
StartMatch: 1
}

Son örneğin ayrıntılarına bakalım. Bu dizeyi Time işlevini kullanarak bir tarih/saat değerine dönüştürmek isterseniz , adlandırılmış alt eşleşmeleri tek olarak geçirmeniz gerekir. Bunu yapmak için, Match işlevinin döndürdüğü kayıtta çalışan With işlevini kullanabilirsiniz:

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

Bu örnekler için, bir Button denetimi ekleyin, OnSelect özelliğini bu formüle ayarlayın ve sonra düğmeyi seçin:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formül Açıklama Sonuç
Match( pangram, "THE", IgnoreCase ) pangram değişkeninin içerdiği metin dizesinde "THE" için tüm eşleşmeleri bulur. Dize iki eşleşme içerir ancak MatchAll değil Match kullandığınız için yalnızca ilk eşleşme döndürülür. Alt eşleşmeler tanımlanmadığından SubMatches sütunu boştur. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) pangram değişkeninin içerdiği metin dizesinde "the" için tüm eşleşmeleri bulur. Sınama büyük/küçük harf duyarlıdır, bu nedenle yalnızca "the" öğesinin ikinci kopyası bulunur. Alt eşleşmeler tanımlanmadığından SubMatches sütunu boştur. Pangram için MatchAll.
MatchAll( pangram, "the", IgnoreCase ) pangram değişkeninin içerdiği metin dizesinde "the" için tüm eşleşmeleri bulur. Bu durumda, sınama büyük/küçük harfe duyarlı değildir, bu nedenle sözcüğün her iki kopyası da bulunur. Alt eşleşmeler tanımlanmadığından SubMatches sütunu boştur. IgnoreCase ile MatchAll.
MatchAll( pangram, "\b\wo\w\b" ) Ortasında "o" olan üç harfli tüm sözcükleri bulur. Üç harflı olmadığı için "brown" kelimesinin dışarıda tutulduğuna ve bu nedenle "\b" ile (boundary sözcüğü) eşleşmediğine dikkat edin. b, wo, w ve b ile pangram için MatchAll.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) "fox" ve "dog" arasındaki tüm karakterlerle eşleşir. {
arada: "jumps over the lazy",
FullMatch: "fox jumps over the lazy dog",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

Bir galeride MatchAll sonuçlarını görmek için:

  1. Boş bir ekranda, boş bir dikey Gallery denetimi ekleyin.

  2. Galerinin Items özelliğini MatchAll( pangram, "\w+" ) veya MatchAll( pangram, MultipleLetters ) olarak ayarlayın.

    Öğeler galerisi.

  3. Galeri şablonunu seçmek için gallery denetiminin ortasında "Ekle sekmesinden bir öğe ekleyin" seçeneğini belirleyin.

  4. Galeri şablonuna bir Label denetimi ekleyin.

  5. Etiketin Text özelliğini ThisItem.FullMatch olarak ayarlayın.

    Galeri, örnek metnimizde bulunan her sözcükle doldurulur. Tüm sözcükleri tek bir ekranda görmek için galerinin şablonunu ve label denetimini yeniden boyutlandırın.

    Text özelliği.