IsMatch, Match ve MatchAll işlevleri
Şunlar için geçerlidir: Tuval uygulamaları Model yönetimli uygulamalar Power Pages 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.
Eşleşme , bulunan ilk eşleşme için bir bilgi kaydı döndürür ve MatchAll , bulunan her eşleşme 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ış alt eşleşme veya alt eşleşmeler | 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. |
Tam Maç | Metin | Eşleşen tüm metin dizesi. |
Maçı Başlat | Numara | Giriş metin dizesindeki eşleşmenin başlangıç konumu. Dizenin ilk karakteri 1 döndürür. |
Alt Maçlar | 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 tüm metin dizesiyle eşleşir (Complete MatchOption), Match ve MatchAll ise metin dizesinin herhangi bir yerinde bir eşleşme arar (MatchOption içerir). 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 bir eşleşme bulunamazsa 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 |
---|---|---|
Herhangi | Herhangi bir karakterle eşleşir. | . |
Virgül | Virgül ile eşleşir. | , |
Parmak | Tek bir rakam ("0" ila "9") ile eşleşir. | \d |
E-posta | "at" simgesi ("@") içeren bir e-posta adresi ve nokta (".") içeren bir etki alanı adıyla eşleşir | .+\@.+\\.[^\\.]{2,} |
Tire | Bir kısa çizgi ile eşleşir. | \- |
SolParen | Sol parantez "(" ile eşleşir. | \( |
Mektup | Bir harf ile eşleşir. | \p{L} |
Çoklu Rakamlar | Bir veya birden çok rakamla eşleşir. | \d+ |
Çoklu Harfler | Bir veya birden çok harf ile eşleşir. | \p{L}+ |
MultipleNonSpaces (ÇokluBoşluklar) | Beyaz boşluk (boşluk, sekme veya yeni satır değil) eklemeyen bir veya birden çok karakterle eşleşir. | \S+ |
Çoklu Boşluklar | Boşluk (boşluk, sekme veya yeni satır) ekleyen bir veya birden çok karakterle eşleşir. | \s+ |
Boşluk Yok | Boşluk eklemeyen tek bir karakter ile eşleşir. | \S |
İsteğe Bağlı Rakamlar | Sıfır, bir veya birden çok rakam ile eşleşir. | \d* |
İsteğe Bağlı Harfler | Sıfır, bir veya birden çok harf ile eşleşir. | \p{L}* |
İsteğe BağlıBoşluk Bırakmaz | Boşluk eklemeyen sıfır, bir veya birden çok karakterle eşleşir. | \S* |
İsteğe Bağlı Alanlar | Boşluk ekleyen sıfır, bir veya birden çok karakterle eşleşir. | \s* |
Dönem | Bir nokta (".") ile eşleşir. | \. |
RightParen | Sağ parantez ")" ile eşleşir. | \) |
Uzay | Boşluk ekleyen bir karakterle eşleşir. | \s |
Sekme | 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 değişkenler, veri kaynakları veya diğer dinamik başvurular 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.
Eşleştir( 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 değişkenler, veri kaynakları veya diğer dinamik başvurular 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 değişkenler, veri kaynakları veya diğer dinamik başvurular 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. | doğru |
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. | YANLIŞ |
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. | YANLIŞ |
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. | doğru |
Ö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 | doğru |
IsMatch( "joan@contoso.com", Email ) |
Bir e-posta adresiyle eşleşir | doğru |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Bir dizi rakam, nokta ve ardından sıfır veya daha fazla rakam ile eşleşir. | doğru |
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. | YANLIŞ |
Normal ifadeler
Formül | Açıklama | Sonuç |
---|---|---|
IsMatch( "986", "\d+" ) |
Sıfırdan büyük bir tamsayıyla eşleşir. | doğru |
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. | doğru |
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. | doğru |
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. | doğru |
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. | YANLIŞ |
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. | YANLIŞ |
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. | boş |
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. | |
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. | |
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. | |
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:
Boş bir ekranda, boş bir dikey Gallery denetimi ekleyin.
Galerinin Items özelliğini MatchAll( pangram, "\w+" ) veya MatchAll( pangram, MultipleLetters ) olarak ayarlayın.
Galeri şablonunu seçmek için gallery denetiminin ortasında "Ekle sekmesinden bir öğe ekleyin" seçeneğini belirleyin.
Galeri şablonuna bir Label denetimi ekleyin.
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.