Funktionen „IsMatch“, „Match“ und „MatchAll“

Gilt für: Canvas-Apps Modellgesteuerte Apps Power Platform CLI

Testet auf Übereinstimmung oder extrahiert Teile einer Textzeichenfolge basierend auf einem Muster.

Beschreibung

Die IsMatch-Funktion prüft, ob eine Textzeichenfolge mit einem Muster übereinstimmt, das normale Zeichen, vordefinierte Muster oder einen regulären Ausdruck enthält. Das Match und MatchAll-Funktionen geben zurück, was übereinstimmte, einschließlich Unterübereinstimmungen.

Verwenden Sie IsMatch,um zu überprüfen, was ein Benutzer in ein Text input-Steuerelement eingegeben hat. Beispielsweise können Sie überprüfen, ob der Benutzer eine gültige E-Mail-Adresse eingegeben hat, bevor das Ergebnis in der Datenquelle gespeichert wird. Wenn der Eintrag nicht mit Ihren Kriterien übereinstimmt, fügen Sie andere Steuerelemente hinzu, die den Benutzer zur Korrektur der Eingabe auffordern.

Verwenden Sie Match, um die erste Textzeichenfolge zu extrahieren, die einem Muster entspricht, und MatchAll, um alle übereinstimmenden Textzeichenfolgen zu extrahieren. Sie können auch Unterübereinstimmungen extrahieren, um komplexe Zeichenfolgen zu analysieren.

Match gibt einen Datensatz mit Informationen für die erste gefundene Übereinstimmung zurück, und MatchAll gibt eine Tabelle mit Datensätzen für jede gefundene Übereinstimmung zurück. Der Datensatz oder die Datensätze enthalten:

Column Type Beschreibung des Dataflows
Unterübereinstimmungsname oder Unterübereinstimmung Text Jede benannte Unterübereinstimmung hat eine eigene Spalte. Erstellen Sie mithilfe von (?<name>...) eine benannte Unterübereinstimmung im regulären Ausdruck. Wenn eine benannte Unterübereinstimmung denselben Namen wie eine der vordefinierten Spalten (unten) hat, hat die Unterübereinstimmung Vorrang und es wird eine Warnung generiert. Um diese Warnung zu vermeiden, benennen Sie die Unterübereinstimmung um.
FullMatch Text Die gesamte übereinstimmende Textzeichenfolge.
StartMatch Anzahl Die Startposition der Übereinstimmung innerhalb der eingegebenen Textzeichenfolge. Das erste Zeichen der Zeichenfolge gibt 1 zurück.
SubMatches Einspaltige Texttabelle (Spalte Wert) Die Tabelle der benannten und unbenannten Unterübereinstimmungen in der Reihenfolge, in der sie im regulären Ausdruck erscheinen. Im Allgemeinen sind benannte Unterübereinstimmungen einfacher zu bearbeiten und werden empfohlen. Verwenden Sie die Funktionen ForAll oder Last( FirstN( ... ) ) zum Arbeiten mit einer einzelnen Teilübereinstimmung. Wenn im regulären Ausdruck keine Unterübereinstimmungen definiert sind, ist diese Tabelle vorhanden, aber leer.

Diese Funktionen unterstützen MatchOptions. Standardmäßig:

  • Diese Funktionen führen eine Übereinstimmung zwischen Groß- und Kleinschreibung durch. Verwenden Sie MatchOptions.IgnoreCase, um Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung durchführen.
  • IsMatch stimmt mit der gesamten Textzeichenfolge überein (Complete MatchOption), während Match und MatchAll nach einer Übereinstimmung an einer beliebigen Stelle in der Textzeichenfolge (Contains MatchOption) sucht. Verwenden Sie je nach Szenario Complete, Contains, BeginsWith oder EndsWith.

IsMatch gibt TRUE zurück, wenn die Zeichenfolge mit dem Muster übereinstimmt, oder FALSE, Wenn dies nicht der Fall ist. Match gibt blank zurück, wenn keine Übereinstimmung gefunden wird, was mit der Funktion IsBlank überprüft werden kann. MatchAll gibt eine leere Tabelle zurück, wenn keine Übereinstimmung gefunden wird, was mit der Funktion IsEmpty überprüft werden kann.

Wenn Sie MatchAll zum Teilen einer Textzeichenfolge verwenden, nutzen Sie die Funktion Split, die einfacher zu bedienen und schneller ist.

Muster

Wenn Sie diese Funktionen verwenden, ist es wichtig, dass sie das entsprechende Muster beschreiben. Sie beschreiben das Muster als Testzeichenfolge als Kombination aus Folgendem:

  • Normale Zeichen, z. B. "abc" oder "123"
  • Vordefinierte Muster, z. B. Letter (Buchstabe), MultipleDigits (mehrere Ziffern) oder E-Mail. (Die Match-Enumeration definiert diese Muster.)
  • Reguläre Ausdruckcodes, z. B. „\d+\s+\d+“ oder „[a-z] +“

Kombinieren Sie diese Elemente mithilfe des Operators für Zeichenfolgenverkettung &&. "abc" & Digit & "\s+" ist beispielsweise ein gültiges Muster, das den Zeichen „a“, „b“ und „c“ gefolgt von einer Ziffer zwischen 0 und 9 entspricht, auf die mindestens ein Leerzeichen folgt.

Normales Zeichen

Das einfachste Muster ist eine Sequenz von normalen Zeichen, die exakt übereinstimmen sollen.

Bei der Verwendung der IsMatch-Funktion entspricht die Zeichenfolge "Hello" genau dem Muster "Hello". Nicht mehr und nicht weniger. Der Zeichensacht Hall stimmt wegen des Ausrufezeichens am Ende und der Kleinschreibung nicht mit dem Muster überein. (Unter "MatchOptions" finden Sie Informationen zu Modifizierungsmöglichkeiten dieses Verhaltens.)

In der Mustersprache sind bestimmten Zeichen bestimmte Funktionen vorbehalten. Fügen Sie entweder vor dem Zeichen einen \ (umgekehrter Schrägstrich) ein, um anzugeben, dass das Zeichen als solches interpretiert werden soll, oder verwenden Sie eines der vordefinierten Muster, die später in diesem Thema beschrieben werden. Diese Tabelle enthält die Sonderzeichen:

Sonderzeichen Beschreibung des Dataflows
. Punkt
? Fragezeichen
* Sternchen
+ Plus
( ) Klammern
[ ] eckige Klammern
{ } geschweifte Klammern
^ Caretzeichen
$ Dollarzeichen
| senkrechter Strich
\ umgekehrter Schrägstrich

Sie können z.B. „Hallo?“ mit einem umgekehrten Schrägstrich vor dem Fragezeichen mit dem Muster „Hallo\?“ abstimmen.

Vordefinierte Muster

Mit vordefinierten Mustern können Sie ganz leicht ein Zeichen aus einem Zeichensatz oder eine Sequenz aus mehreren Zeichen übereinstimmen. Verwenden Sie den Operator für Zeichenfolgenverkettungen &&, um Ihre eigenen Textzeichenfolgen mit Elementen der Match-Enumeration zu kombinieren:

Match-Enumeration Beschreibung Regulärer Ausdruck
Any Ordnet ein beliebiges Zeichen zu .
Comma Ordnet ein Komma zu ,
Digit Ordnet eine einzelne Ziffer („0“ bis „9“) zu \d
E‑Mail Ordnet eine E-Mail-Adresse zu, die ein at-Zeichen (@) und einen Domänennamen enthält, der einen Punkt (.) enthält .+\@.+\\.[^\\.]{2,}
Hyphen Ordnet einen Bindestrich zu \-
LeftParen Ordnet eine linke Klammer „(“ zu \(
Letter Ordnet einen Buchstaben zu \p{L}
MultipleDigits Ordnet mindestens eine Ziffer zu \d+
MultipleLetters Ordnet mindestens einen Buchstaben zu \p{L}+
MultipleNonSpaces Ordnet eine oder mehrere Zeichen zu, die keine Lücken (kein Leerzeichen, Registerkarte oder Zeilenvorschub) hinzufügen. \S+
MultipleSpaces Ordnet ein oder mehrere Zeichen zu, die Lücken (Leerzeichen, Registerkarte oder Zeilenvorschub) hinzufügen. \s+
NonSpace Ordnet ein einzelnes Zeichen zu, das keine Lücken hinzufügt \S
OptionalDigits Ordnet 0, 1 oder mehrere Ziffern zu \d*
OptionalLetters Ordnet 0, 1 oder mehrere Buchstaben zu \p{L}*
OptionalNonSpaces Ordnet 0, 1 oder mehrere Zeichen zu, die keine Lücken hinzufügen \S*
OptionalSpaces Ordnet 0, 1 oder mehrere Zeichen zu, die Lücken hinzufügen \s*
Period Ordnet einen Punkt (.) zu \.
RightParen Ordnet eine rechte Klammer „)“ zu \)
Space Ordnet ein Zeichen zu, das Lücken hinzufügt \s
Tab Ordnet ein Tabulatorzeichen zu \t

Das Muster "A" & MultipleDigits entspricht dem Buchstaben „A“ gefolgt von einer oder mehreren Ziffern

Reguläre Ausdrücke

Das Muster, das diese Funktionen verwenden, ist ein regulärer Ausdruck. Normale Zeichen und vordefinierte Muster, die oben in diesem Thema beschrieben wurden, unterstützen Sie beim Erstellen von regulären Ausdrücken.

Reguläre Ausdrücke sind sehr leistungsstark; sie stehen in vielen Programmiersprachen zur Verfügung und werden für eine Vielzahl von Aufgaben verwendet. Sie können auch oft wie eine zufällige Folge von Satzzeichen aussehen. In diesem Artikel werden nicht alle Aspekte der regulären Ausdrücken beschrieben; allerdings können Sie im Internet viele weitere Informationen und Tutorials und Tools finden.

Reguläre Ausdrücke haben unterschiedliche Dialekte, und Power Apps verwendet eine Version von JavaScript. Eine Einführung in die Syntax finden Sie unter Syntax für reguläre Ausdrücke. Benannte Unterübereinstimmungen (manchmal auch als benannte Erfassungsgruppen bezeichnet) werden unterstützt:

  • Benannte Unterübereinstimmungen: (?<name> ...)
  • Benannte Rückreferenzen: \k<name>

In der Tabelle Match-Enumeration weiter oben in diesem Thema wird jede Aufzählung in derselben Zeile wie der entsprechende reguläre Ausdruck angezeigt.

Übereinstimmungsoptionen

Sie können das Verhalten dieser Funktionen durch Angabe von einer oder mehreren Optionen anpassen, die Sie mit dem Operator für Zeichenfolgenverkettung (&&) kombinieren können.

MatchOptions-Enumeration Description Auswirkungen auf einen regulären Ausdruck
MatchOptions.BeginsWith Das Muster muss ab dem Anfang des Texts übereinstimmen. Fügt ein ^ am Anfang des regulären Ausdrucks ein
MatchOptions.Complete Standard für IsMatch. Das Muster muss mit der gesamten Zeichenfolge des Textes von Anfang bis Ende übereinstimmen. Fügt ein ^ am Anfang und $ am Ende des regulären Ausdrucks ein.
MatchOptions.Contains Standard für Match und MatchAll. Das Muster muss irgendwo im Text vorkommen; allerdings muss es nicht zwangsläufig am Anfang oder Ende vorkommen. Ändert nicht den regulären Ausdruck
MatchOptions.EndsWith Das Muster muss mit dem Ende der Textzeichenfolge übereinstimmen. Fügt ein $ am Ende des regulären Ausdrucks ein.
MatchOptions.IgnoreCase Behandelt Groß- und Kleinbuchstaben als identisch. Standardmäßig wird bei der Übereinstimmung auf Groß- und Kleinschreibung geachtet. Ändert nicht den regulären Ausdruck Diese Option entspricht dem Standardmodifikator „i“ für reguläre Ausdrücke.
MatchOptions.Multiline Zeilenübergreifende Übereinstimmung Ändert nicht den regulären Ausdruck Diese Option entspricht dem Standardmodifikator „m“ für reguläre Ausdrücke.

Das Verwenden von MatchAll entspricht der Verwendung des Standardmodifikators „g“ für reguläre Ausdrücke.

Syntax

IsMatch( Text, Pattern [, Options ] )

  • Text – Erforderlich. Die zu prüfende Textzeichenfolge
  • Muster: erforderlich. Das zu prüfende Muster als Textzeichenfolge Verketten Sie vordefinierte Muster, die die Match-Enumeration definiert, oder stellen Sie einen regulären Ausdruck zur Verfügung. Muster muss eine konstante Formel ohne Variablen, Datenquellen oder andere dynamische Referenzen sein, die sich während der Ausführung der App ändern.
  • Options – optional. Eine Kombination der Textzeichenfolge aus MatchOptions-Enumerationswerten. Standardmäßig wird MatchOptions.Complete verwendet.

Match( Text, Pattern [, Options ] )

  • Text – Erforderlich. Die abzugleichende Textzeichenfolge
  • Muster: erforderlich. Das abzugleichende Muster als Textzeichenfolge Verketten Sie vordefinierte Muster, die die Match-Enumeration definiert, oder stellen Sie einen regulären Ausdruck zur Verfügung. Muster muss eine konstante Formel ohne Variablen, Datenquellen oder andere dynamische Referenzen sein, die sich während der Ausführung der App ändern.
  • Options – optional. Eine Kombination der Textzeichenfolge aus MatchOptions-Enumerationswerten. Standardmäßig wird MatchOptions.Contains verwendet.

MatchAll( Text, Pattern [, Options ] )

  • Text – Erforderlich. Die abzugleichende Textzeichenfolge
  • Muster: erforderlich. Das abzugleichende Muster als Textzeichenfolge Verketten Sie vordefinierte Muster, die die Match-Enumeration definiert, oder stellen Sie einen regulären Ausdruck zur Verfügung. Muster muss eine konstante Formel ohne Variablen, Datenquellen oder andere dynamische Referenzen sein, die sich während der Ausführung der App ändern.
  • Options – optional. Eine Kombination der Textzeichenfolge aus MatchOptions-Enumerationswerten. Standardmäßig wird MatchOptions.Contains verwendet.

IsMatch-Beispiele

Normales Zeichen

Stellen Sie sich vor, dass die App ein Text input-Steuerelement mit dem Namen TextInput1 enthält. Der Benutzer gibt Werte in dieses Steuerelement ein, die in einer Datenbank gespeichert werden sollen.

Der Benutzer gibt Hello World in Texteingabe1 ein.

Formel Beschreibung Ergebnis
IsMatch( TextInput1.Text, "Hello world" ) Prüft, ob die Benutzereingaben genau mit der Zeichenfolge „Hello World“ übereinstimmt true
IsMatch( TextInput1.Text, "Good bye" ) Prüft, ob die Benutzereingaben genau mit der Zeichenfolge "Good Bye" übereinstimmt false
IsMatch( TextInput1.Text, "hello", Contains ) Prüft, ob die Eingabe des Benutzers das Wort „Hello“ (Groß-/Kleinschreibung wird beachtet) enthält false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Prüft, ob die Eingabe des Benutzers das Wort „Hello“(Groß-/Kleinschreibung beachten) enthält. true

Vordefinierte Muster

Formel Beschreibung Ergebnis
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Ordnet eine US-Sozialversicherungsnummer zu true
IsMatch( "joan@contoso.com", Email ) Ordnet eine E-Mail-Adresse zu true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Ordnet eine Folge von Ziffern, einen Punkt (.) und dann 0 (null) oder mehrere Ziffern zu true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Ordnet eine Folge von Ziffern, einen Punkt (.) und dann 0 (null) oder mehrere Ziffern zu Im abzugleichenden Text kommt kein Punkt vor, weshalb dieses Muster nicht übereinstimmt. false

Reguläre Ausdrücke

Formel Beschreibung Ergebnis
IsMatch( "986", "\d+" ) Ordnet eine ganze Zahl größer als 0 (null) zu true
IsMatch( "1.02", "\d+(\.\d\d)?" ) Ordnet einen positiven Währungsbetrag zu Wenn die Eingabe ein Dezimaltrennzeichen enthält, muss die Eingabe auch zwei numerische Zeichen nach dem Dezimaltrennzeichen enthalten. 3,00 ist beispielsweise gültig, aber 3,1 nicht. true
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Ordnet einen positiven oder negativen Währungsbetrag zu. Wenn die Eingabe ein Dezimaltrennzeichen enthält, muss die Eingabe auch zwei numerische Zeichen nach dem Dezimaltrennzeichen enthalten. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Ordnet eine US-Sozialversicherungsnummer zu Überprüft das Format, den Typ und die Länge des angegebenen Eingabefelds. Die Zeichenfolge, die übereinstimmen soll, muss aus drei numerischen Zeichen gefolgt von einem Bindestrich und dann zwei numerische Zeichen gefolgt von einem Bindestrich und dann vier numerischen Zeichen bestehen. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Wie im vorherigen Beispiel, aber einer der Bindestriche ist in der Eingabe an der falschen Stelle false
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Überprüft ein sicheres Kennwort, das acht, neun oder 10 Zeichen enthalten muss, zusätzlich zu mindestens einer Ziffer und mindestens einem alphabetisches Zeichen. Die Zeichenfolge darf keine Sonderzeichen enthalten. false

Match- und MatchAll-Beispiele

Formel Beschreibung Ergebnis
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" Extrahiert nur den E-Mail-Teil der Kontaktinformationen. {
E-Mail: „bob.jones@contoso.com“,
FullMatch: <bob.jones@contoso.com>,
SubMatches: [bob.jones@contoso.com],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Extrahiert nur den E-Mail-Teil der Kontaktinformationen. Es wurde keine legale Adresse gefunden (es gibt kein @-Zeichen), daher gibt die Funktion blank zurück. leer
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Extrahiert die Sprache, das Skript und die Region des Sprachkennzeichens zurück, das die Funktion Language zurückgibt. Diese Ergebnisse spiegeln die Vereinigten Staaten wider; weitere Beispiele finden Sie in der Language-Funktionsdokumentation. Der Operator (?: gruppiert Zeichen, ohne eine weitere Unterübereinstimmung zu erstellen. {
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)?" ) Extrahiert die Stunden, Minuten und Sekunden aus einem ISO 8601-Dauerwert. Die extrahierten Zahlen befinden sich noch in einer Textzeichenfolge. Verwenden Sie die Value-Funktion, um sie in eine Zahl umzuwandeln, bevor mathematische Vorgänge daran ausgeführt werden. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2","1","39"],
StartMatch: 1
}

Lassen Sie uns das letzte Beispiel genauer betrachten. Wenn Sie diese Zeichenfolge mithilfe der Time-Funktion in einen Datums-/Zeitwert konvertieren möchten, müssen Sie die genannten Unterübereinstimmungen einzeln übergeben. Dazu können Sie die With-Funktion verwenden, die auf dem Datensatz arbeitet, der von Match zurückgegeben wird:

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

Fügen Sie für diese Beispiele ein Button-Steuerelement hinzu, stellen Sie seine OnSelect-Eigenschaft auf diese Formel ein, und wählen Sie dann die Schaltfläche:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Formel Beschreibung Ergebnis
Match( pangram, "THE", IgnoreCase ) Finden Sie alle Übereinstimmungen von „THE“ in der Textzeichenfolge, die die pangram-Variable enthält. Die Zeichenfolge enthält zwei Übereinstimmungen, aber nur die erste wird zurückgegeben, weil Sie Match und nicht MatchAll verwenden. Die Spalte „SubMatches“ ist leer, da keine Unterübereinstimmungen definiert wurden. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) Finden Sie alle Übereinstimmungen von „the“ in der Textzeichenfolge, die die pangram-Variable enthält. Der Test unterscheidet zwischen Groß- und Kleinschreibung, sodass nur die zweite Instanz von „the“ gefunden wird. Die Spalte „SubMatches“ ist leer, da keine Unterübereinstimmungen definiert wurden. MatchAll für Pangram
MatchAll( pangram, "the", IgnoreCase ) Finden Sie alle Übereinstimmungen von „the“ in der Textzeichenfolge, die die pangram-Variable enthält. In diesem Fall wird bei der Prüfung die Groß- und Kleinschreibung nicht berücksichtigt, sodass beide Instanzen des Wortes gefunden werden. Die Spalte „SubMatches“ ist leer, da keine Unterübereinstimmungen definiert wurden. MatchAll mit IgnoreCase
MatchAll( pangram, "\b\wo\w\b" ) Findet alle Wörter aus drei Buchstaben mit einem „o“ in der Mitte. Beachten Sie, dass „brown“ ausgeschlossen ist, da es sich nicht um ein Wort aus drei Buchstaben handelt und daher nicht mit „\b“ (Wortgrenze) übereinstimmt. MatchAll für Pangram mit b, wo, w und b
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Gleicht alle Zeichen zwischen „fox“ und „dog“ ab. {
zwischen: „über den faulen springen“,
FullMatch: „fox jumps over the lazy dog“,
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

Um die Ergebnisse von MatchAll in einem Katalog anzuzeigen:

  1. Fügen Sie in einem leeren Bildschirm eine leeres vertikales Gallery-Steuerelement hinzu.

  2. Stellen Sie die Items-Eigenschaft des Katalogs auf MatchAll( pangram, "\w+" ) oder MatchAll( pangram, MultipleLetters ) ein.

    Katalog der Elemente

  3. Wählen Sie in der Mitte des gallery-Steuerelements „Element aus der Registerkarte „Einfügen“ hinzufügen“, um die Vorlage des Katalogs auszuwählen.

  4. Fügen Sie der Katalogvorlage ein Label-Steuerelement (Bezeichnung) hinzu.

  5. Legen Sie die Text-Eigenschaft auf ThisItem.FullMatch fest.

    Der Katalog ist mit jedem Wort in unserem Beispieltext gefüllt. Ändern Sie die Größe der Katalogvorlage und des Label-Steuerelements, um alle Wörter auf einem Bildschirm anzuzeigen.

    Text-Eigenschaft