Funktionen „IsMatch“, „Match“ und „MatchAll“
Gilt für: Canvas-Apps Modellgesteuerte Apps Power Pages 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 |
---|---|---|
benannte Unterübereinstimmung oder Unterübereinstimmungen | 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. |
Vollständiges Match | Text | Die gesamte übereinstimmende Textzeichenfolge. |
StartMatch | Anzahl | Die Startposition der Übereinstimmung innerhalb der eingegebenen Textzeichenfolge. Das erste Zeichen der Zeichenfolge gibt 1 zurück. |
Unterübereinstimmungen | 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 gleicht die gesamte Textzeichenfolge ab (Complete MatchOption), während Match und MatchAll nach einer Übereinstimmung an einer beliebigen Stelle in der Textzeichenfolge suchen (Contains MatchOption). Verwenden Sie je nach Szenario Complete, Contains, BeginsWith oder EndsWith.
IsMatch gibt true zurück, wenn die Textzeichenfolge mit dem Muster übereinstimmt, oder false wenn dies nicht der Fall ist. Match gibt blank zurück, wenn keine Übereinstimmung gefunden wird, die mit der Funktion IsBlank getestet werden kann. MatchAll gibt eine leere Tabelle zurück, wenn keine Übereinstimmung gefunden wird, die mit der Funktion IsEmpty getestet 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 |
---|---|
. | 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 |
---|---|---|
Beliebig | Ordnet ein beliebiges Zeichen zu | . |
Komma | Ordnet ein Komma zu | , |
Ziffer | Ordnet eine einzelne Ziffer („0“ bis „9“) zu | \d |
Ordnet eine E-Mail-Adresse zu, die ein at-Zeichen (@) und einen Domänennamen enthält, der einen Punkt (.) enthält | .+\@.+\\.[^\\.]{2,} |
|
Bindestrich | Ordnet einen Bindestrich zu | \- |
LinkeKlammer | Ordnet eine linke Klammer „(“ zu | \( |
Brief | Ordnet einen Buchstaben zu | \p{L} |
Mehrere Ziffern | Ordnet mindestens eine Ziffer zu | \d+ |
Mehrere Buchstaben | Ordnet mindestens einen Buchstaben zu | \p{L}+ |
MehrereNichtLeerzeichen | Ordnet eine oder mehrere Zeichen zu, die keine Lücken (kein Leerzeichen, Registerkarte oder Zeilenvorschub) hinzufügen. | \S+ |
Mehrere Räume | Ordnet ein oder mehrere Zeichen zu, die Lücken (Leerzeichen, Registerkarte oder Zeilenvorschub) hinzufügen. | \s+ |
Nicht-Raum | Ordnet ein einzelnes Zeichen zu, das keine Lücken hinzufügt | \S |
OptionalDigits | Ordnet 0, 1 oder mehrere Ziffern zu | \d* |
OptionalBuchstaben | Ordnet 0, 1 oder mehrere Buchstaben zu | \p{L}* |
OptionalNonSpaces | Ordnet 0, 1 oder mehrere Zeichen zu, die keine Lücken hinzufügen | \S* |
Optionale Bereiche | Ordnet 0, 1 oder mehrere Zeichen zu, die Lücken hinzufügen | \s* |
Zeitraum | Ordnet einen Punkt (.) zu | \. |
RechteKlammer | Ordnet eine rechte Klammer „)“ zu | \) |
Raum | 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 | Beschreibung | 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.Enthält | 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
IstMatch ( Text, Muster [, Optionen ] )
- 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.
- Optionen – Optional. Eine Kombination der Textzeichenfolge aus MatchOptions-Enumerationswerten. Standardmäßig wird MatchOptions.Complete verwendet.
Übereinstimmen ( Text, Muster [, Optionen ] )
- 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.
- Optionen – Optional. Eine Kombination der Textzeichenfolge aus MatchOptions-Enumerationswerten. Standardmäßig wird MatchOptions.Contains verwendet.
Alle abgleichen ( Text, Muster [, Optionen ] )
- 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.
- Optionen – 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 | WAHR |
IsMatch( TextInput1.Text, "Good bye" ) |
Prüft, ob die Benutzereingaben genau mit der Zeichenfolge "Good Bye" übereinstimmt | FALSCH |
IsMatch( TextInput1.Text, "hello", Contains ) |
Prüft, ob die Eingabe des Benutzers das Wort „Hello“ (Groß-/Kleinschreibung wird beachtet) enthält | FALSCH |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
Prüft, ob die Eingabe des Benutzers das Wort „Hello“(Groß-/Kleinschreibung beachten) enthält. | WAHR |
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 | WAHR |
IsMatch( "joan@contoso.com", Email ) |
Ordnet eine E-Mail-Adresse zu | WAHR |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
Ordnet eine Folge von Ziffern, einen Punkt (.) und dann 0 (null) oder mehrere Ziffern zu | WAHR |
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. | FALSCH |
Reguläre Ausdrücke
Formel | Beschreibung | Ergebnis |
---|---|---|
IsMatch( "986", "\d+" ) |
Ordnet eine ganze Zahl größer als 0 (null) zu | WAHR |
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. | WAHR |
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. | WAHR |
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. | WAHR |
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 | FALSCH |
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. | FALSCH |
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( 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( 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. | |
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:
Fügen Sie in einem leeren Bildschirm eine leeres vertikales Gallery-Steuerelement hinzu.
Stellen Sie die Items-Eigenschaft des Katalogs auf MatchAll( pangram, "\w+" ) oder MatchAll( pangram, MultipleLetters ) ein.
Wählen Sie in der Mitte des gallery-Steuerelements „Element aus der Registerkarte „Einfügen“ hinzufügen“, um die Vorlage des Katalogs auszuwählen.
Fügen Sie der Katalogvorlage ein Label-Steuerelement (Bezeichnung) hinzu.
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.