הפונקציות IsMatch, Match ו- MatchAll
חל על: יישומי בד ציור יישומים מונחי דגמים Power Pages Power Platform CLI
בדיקת התאמה או חילוץ חלקים של מחרוזת טקסט בהתבסס על תבנית.
תיאור
הפונקציה IsMatch בודקת אם מחרוזת טקסט מתאימה לתבנית שיכולה להכיל תווים רגילים, תבניות מוגדרות מראש או ביטוי רגיל. הפונקציות Match ו- MatchAll מחזירות את מה שהותאם, לרבות התאמות משנה.
השתמש בפונקציה IsMatch כדי לאמת את מה שמשתמש הקליד בפקד Text input. לדוגמה, באפשרותך לאשר אם המשתמש הזין כתובת דואר חוקית לפני שהתוצאה נשמרה במקור הנתונים שלך. אם הערך אינו מתאים לקריטריונים שלך, הוסף פקדים אחרים המנחים את המשתמש לתקן את הערך.
השתמש ב- Match כדי לחלץ את מחרוזת הטקסט הראשונה שמתאימה לתבנית וב- MatchAll כדי לחלץ את כל מחרוזות הטקסט שמתאימות. באפשרותך גם לחלץ התאמות משנה כדי לנתח מחרוזות מורכבות.
Match מחזירה רשומת מידע עבור ההתאמה הראשונה שנמצאה, ו- MatchAll מחזירה טבלת רשומות עבור כל התאמה שנמצאה. הרשומה או הרשומות מכילות:
עמודה | Type | תיאור |
---|---|---|
התאמת משנה או התאמות משנה בעלות שם | טקסט | לכל התאמת משנה בעלת שם תהיה עמודה משלה. צור התאמת משנה בעלת שם באמצעות (?<name>...) בביטוי הרגיל. אם להתאמת משנה בעלת שם יש את אותו שם כשל אחת מהעמודות שהוגדרו מראש (להלן), התאמת המשנה מקבלת עדיפות ונוצרת אזהרה. כדי להימנע מאזהרה זו, שנה את שם התאמת המשנה. |
FullMatch | טקסט | כל מחרוזת הטקסט שהותאמה. |
StartMatch | מספר | המיקום ההתחלתי של ההתאמה בתוך מחרוזת הטקסט של הקלט. התו הראשון של המחרוזת מחזיר 1. |
SubMatches | טבלת עמודה יחידה של טקסט (העמודה ערך) | הטבלה של התאמות משנה בעלות שם וללא שם בסדר שבו הן מופיעות בביטוי הרגיל. בדרך כלל, קל יותר לעבוד עם התאמות משנה בעלות שם ומומלץ להשתמש בהן. השתמש בפונקציה ForAll או בפונקציות Last( FirstN( ... ) ) כדי לעבוד עם התאמת משנה יחידה. אם לא הוגדרו התאמות משנה בביטוי הרגיל, טבלה זו תתקיים, אבל תהיה ריקה. |
פונקציות אלה תומכות ב- MatchOptions. כברירת מחדל:
- פונקציות אלה מבצעות התאמה תלויית רישיות. השתמש ב- MatchOptions.IgnoreCase כדי לבצע התאמות שאינן תלויות רישיות.
- IsMatch מתאימה למחרוזת הטקסט השלמה (Complete MatchOption), בעוד ש- Match ו- MatchAll מחפשות התאמה בכל מקום במחרוזת הטקסט (Contains MatchOption). השתמש ב- Complete, Contains, BeginsWith, או EndsWith כפי שמתאים עבור התרחיש שלך.
IsMatch מחזירה true אם מחרוזת הטקסט מתאימה לתבנית או false אם לא. Match מחזירה ריק אם לא נמצאה התאמה שניתן לבדוק בעזרת הפונקציה IsBlank. MatchAll מחזירה טבלה ריקה אם לא נמצאה התאמה שניתן לבדוק עם הפונקציה IsEmpty.
אם אתה משתמש ב- MatchAll כדי לפצל מחרוזת טקסט, שקול להשתמש בפונקציה Split שהיא פשוטה יותר ומהירה יותר לשימוש.
תבניות
המפתח לשימוש בפונקציות אלה הוא תיאור התבנית שתתאים. עליך לתאר את התבנית במחרוזת טקסט כשילוב של:
- תווים רגילים, כגון "abc" או "123".
- תבניות מוגדרות מראש, כגון מכתב, ספרות מרובות, או דואר. (הספירה התאמה מגדירה תבניות אלה.)
- קודים של ביטוי רגיל, כגון "\d+\s+\d+" או "[a-z]+".
שלב רכיבים אלה באמצעות אופרטור שרשור המחרוזות &. לדוגמה, "abc" & Digit & "\s+" היא תבנית חוקית שמתאימה לתווים "a", "b" ו- "c" ואחריהם ספרה בטווח של 0 עד 9, ולאחר מכן תו רווח לבן אחד לפחות.
תווים רגילים
התבנית הפשוטה ביותר היא רצף של תווים רגילים להתאמה מדויקת.
לדוגמה, כאשר היא משמשת עם הפונקציה IsMatch, המחרוזת "Hello" מתאימה בדיוק לתבנית "Hello". לא יותר ולא פחות. המחרוזת "hello!" אינה מתאימה לתבנית בגלל סימן הקריאה בסוף ובגלל שהרישיות שגויה עבור האות "h". (ראה אפשרויות התאמה לקבלת דרכים לשינוי אופן פעולה זה.)
בשפת התבנית, תווים מסוימים נשמרים למטרות מיוחדות. כדי להשתמש בתווים אלה, הקדם \ (קו נטוי הפוך) לתו כדי לציין שיש להתייחס לתו זה באופן מילולי, או השתמש באחת מהתבניות המוגדרות מראש המתוארות בהמשך הנושא. בטבלה זו מופיעים התווים המיוחדים:
תו מיוחד | תיאור |
---|---|
. | נקודה |
? | סימן שאלה |
* | כוכבית |
+ | plus |
( ) | סוגריים |
[ ] | סוגריים מרובעים |
{ } | סוגריים מסולסלים |
^ | קארה |
$ | סימן דולר |
| | קו או צינור אנכי |
\ | קו נטוי הפוך |
לדוגמה, אפשר להתאים את "Hello?" באמצעות התבנית "Hello\?" עם קו נטוי לפני סימן השאלה.
תבניות מוגדרות מראש
תבניות מוגדרות מראש מספקות דרך פשוטה להתאים לתו אחד מתוך ערכת תווים או לרצף של תווים מרובים. השתמש באופרטור שרשור המחרוזות & כדי לשלב את מחרוזות הטקסט שלך עם הספירה התאמה:
הספירה 'התאמה' | תיאור | ביטוי רגיל |
---|---|---|
Any | מתאים לכל תו. | . |
Comma | מתאים לפסיק. | , |
Digit | מתאים לספרה יחידה ("0" עד "9"). | \d |
מתאים לכתובת דואר המכילה סמל "ב-" ("@") ושם תחום המכיל נקודה (".") | .+\@.+\\.[^\\.]{2,} |
|
Hyphen | מתאים למקף. | \- |
LeftParen | מתאים לסוגריים שמאליים ")". | \( |
Letter | מתאים לאות. | \p{L} |
MultipleDigits | מתאים לספרה אחת או יותר. | \d+ |
MultipleLetters | מתאים לאות אחת או יותר. | \p{L}+ |
MultipleNonSpaces | מתאים לתו אחד או יותר שאינם מוסיפים רווח לבן (לא רווח, טאב או שורה חדשה). | \S+ |
MultipleSpaces | מתאים לתו אחד או יותר שמוסיפים רווח לבן (רווח, טאב או שורה חדשה). | \s+ |
NonSpace | מתאים לתו יחיד שאינו מוסיף רווח לבן. | \S |
OptionalDigits | מתאים לאפס ספרות, ספרה אחת או יותר. | \d* |
OptionalLetters | מתאים לאפס אותיות, אות אחת או יותר. | \p{L}* |
OptionalNonSpaces | מתאים לאפס תווים, תו אחד או יותר שלא מוסיפים רווח לבן. | \S* |
OptionalSpaces | מתאים לאפס תווים, תו אחד או יותר שמוסיפים רווח לבן. | \s* |
Period | מתאים לנקודה ("."). | \. |
RightParen | מתאים לסוגריים ימניים "(". | \) |
Space | מתאים לתו שמוסיף רווח לבן. | \s |
כרטיסיה | מתאים לתו טאב. | \t |
לדוגמה, התבנית "A" & MultipleDigits תתאים לאות "A" ואחריה ספרה אחת או יותר.
ביטויים רגילים
התבנית שפונקציות אלה משתמשות בה היא ביטוי רגיל. התווים הרגילים והתבניות המוגדרות מראש המתוארים בתחילת נושא זה עוזרים בבניית ביטויים רגילים.
ביטויים רגילים הם ביטויים חזקים מאוד הזמינים בשפות תיכנות רבות, ומשמשים עבור מגוון רחב של מטרות. לעתים קרובות הם יכולים גם להיראות כמו רצף אקראי של סימני פיסוק. מאמר זה אינו מתאר את כל ההיבטים של ביטויים רגילים, אבל שפע של מידע, הדרכות וכלים זמינים באינטרנט.
ביטויים רגילים מגיעים בדיאלקטים שונים ו- Power Apps משתמש בגירסה של דיאלקט JavaScript. ראה תחביר של ביטוי רגיל לקבלת מבוא לתחביר. התאמות משנה בעלות שם (לפעמים נקראות קבוצות לכידה בעלות שם) נתמכות:
- התאמות משנה בעלות שם: (?<name> ...)
- הפניות לאחור בעלות שם: \k<name>
בטבלת הספירה התאמה בתחילת הנושא, כל ספירה מופיעה באותה שורה כשל הביטוי הרגיל התואם שלה.
אפשרויות התאמה
באפשרותך לשנות את אופן הפעולה של פונקציות אלה על-ידי ציון אפשרות אחת או יותר, אשר ניתן לשלב באמצעות אופרטור שרשור המחרוזות (&).
ספירת MatchOptions | Description | השפעה על ביטוי רגיל |
---|---|---|
MatchOptions.BeginsWith | התבנית מוכרחה להיות תואמת מתחילת הטקסט. | מוסיפה ^ להתחלת הביטוי הרגיל. |
MatchOptions.Complete | ברירת מחדל עבור IsMatch. התבנית מוכרחה להיות תואמת למחרוזת הטקסט השלמה, מתחילתה ועד סופה. | מוסיפה ^ להתחלה ו- $ לסוף הביטוי הרגיל. |
MatchOptions.Contains | ברירת מחדל עבור Match ו- MatchAll. התבנית מוכרחה להופיע במקום כלשהו בטקסט, אבל לא צריכה להתחיל או לסיים אותו. | לא משנה את הביטוי הרגיל. |
MatchOptions.EndsWith | התבנית מוכרחה להיות תואמת לסוף מחרוזת הטקסט. | מוסיפה $ לסוף הביטוי הרגיל. |
MatchOptions.IgnoreCase | מתייחסת לאותיות גדולות ולאותיות קטנות כאותיות זהות. כברירת מחדל, ההתאמה היא תלוית רישיות. | לא משנה את הביטוי הרגיל. אפשרות זו היא המקבילה למשנה "i" הסטנדרטי עבור ביטויים רגילים. |
MatchOptions.Multiline | מתאימה למספר שורות. | לא משנה את הביטוי הרגיל. אפשרות זו היא המקבילה למשנה "m" הסטנדרטי עבור ביטויים רגילים. |
השימוש ב- MatchAll שווה ערך למשנה "g" הסטנדרטי עבור ביטויים רגילים.
תחביר
IsMatch( Text, Pattern [, Options ] )
- Text – נדרש. מחרוזת הטקסט לבדיקה.
- תבנית – נדרשת. התבנית שיש לבדוק כמחרוזת טקסט. שרשר תבניות מוגדרות מראש שהספירה התאמה מגדירה, או ספק ביטוי רגיל. תבנית מוכרחה להיות נוסחה קבועה ללא משתנים, מקורות נתונים או הפניות דינאמיות אחרות שמשתנות כאשר היישום פועל.
- אפשרויות – אופציונלי. שילוב מחרוזת טקסט של ערכי הספירה MatchOptions. כברירת מחדל, נעשה שימוש ב- MatchOptions.Complete.
Match( Text, Pattern [, Options ] )
- Text – נדרש. מחרוזת הטקסט להתאמה.
- תבנית – נדרשת. התבנית שיש להתאים כמחרוזת טקסט. שרשר תבניות מוגדרות מראש שהספירה התאמה מגדירה, או ספק ביטוי רגיל. תבנית מוכרחה להיות נוסחה קבועה ללא משתנים, מקורות נתונים או הפניות דינאמיות אחרות שמשתנות כאשר היישום פועל.
- אפשרויות – אופציונלי. שילוב מחרוזת טקסט של ערכי הספירה MatchOptions. כברירת מחדל, נעשה שימוש ב- MatchOptions.Contains.
MatchAll( Text, Pattern [, Options ] )
- Text – נדרש. מחרוזת הטקסט להתאמה.
- תבנית – נדרשת. התבנית שיש להתאים כמחרוזת טקסט. שרשר תבניות מוגדרות מראש שהספירה התאמה מגדירה, או ספק ביטוי רגיל. תבנית מוכרחה להיות נוסחה קבועה ללא משתנים, מקורות נתונים או הפניות דינאמיות אחרות שמשתנות כאשר היישום פועל.
- אפשרויות – אופציונלי. שילוב מחרוזת טקסט של ערכי הספירה MatchOptions. כברירת מחדל, נעשה שימוש ב- MatchOptions.Contains.
דוגמאות ל- IsMatch
תווים רגילים
דמיין שהיישום שלך מכיל פקד Text input בשם TextInput1. המשתמש מזין ערכים בפקד זה שמיועדים לאחסון במסד נתונים.
המשתמש מקליד Hello world ב- TextInput1.
נוסחה | תיאור | תוצאה |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
בודק אם הקלט של המשתמש מתאים, במדויק, למחרוזת "Hello world". | true |
IsMatch( TextInput1.Text, "Good bye" ) |
בודק אם הקלט של המשתמש מתאים, במדויק, למחרוזת "Good bye". | false |
IsMatch( TextInput1.Text, "hello", Contains ) |
בודק אם קלט המשתמש מכיל את המילה "hello" (תלוית רישיות). | false |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
בודק אם קלט המשתמש מכיל את המילה "hello" (לא תלוית רישיות). | true |
תבניות מוגדרות מראש
נוסחה | תיאור | תוצאה |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
התאמת מספר ביטוח לאומי בארצות הברית | true |
IsMatch( "joan@contoso.com", Email ) |
התאמת כתובת דואר אלקטרוני | true |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
התאמת רצף של ספרות, נקודה ולאחר מכן אפס ספרות או יותר. | true |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
התאמת רצף של ספרות, נקודה ולאחר מכן אפס ספרות או יותר. נקודה לא מופיעה בטקסט שיש להתאים, ולכן אין התאמה לתבנית זו. | false |
ביטויים רגילים
נוסחה | תיאור | תוצאה |
---|---|---|
IsMatch( "986", "\d+" ) |
מתאים למספר שלם הגדול מאפס. | true |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
מתאים לסכום מטבעות חיובי. אם הקלט מכיל נקודה עשרונית, הקלט מוכרח גם להכיל שני תווים מספריים אחרי הנקודה העשרונית. לדוגמה, 3.00 חוקי, אבל 3.1 לא. | true |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
מתאים לסכום מטבעות חיובי או שלילי. אם הקלט מכיל נקודה עשרונית, הקלט מוכרח גם להכיל שני תווים מספריים אחרי הנקודה העשרונית. | true |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
התאמת מספר ביטוח לאומי בארצות הברית. מאמת את התבנית, הסוג והאורך של שדה הקלט שסופק. המחרוזת שיש להתאים לה מוכרחה לכלול שלושה תווים מספריים שאחריהם מקף, ולאחר מכן שני תווים מספריים ואחריהם מקף, ובסוף ארבעה תווים מספריים. | true |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
זהה לדוגמה הקודמת, אך אחד המקפים אינו במקומו בקלט. | false |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
מאמת סיסמה חזקה, שמוכרחה להכיל שמונה, תשעה או עשרה תווים, בנוסף לספרה אחת לפחות ותו אלפביתי אחד לפחות. המחרוזת לא יכולה להכיל תווים מיוחדים. | false |
דוגמאות ל- 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. | blank |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
מחלץ את חלקי השפה, קובץ ה- Script והאזור של תגית השפה שהפונקציה 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 עליך להעביר את התאמות המשנה בעלות השם בנפרד. לשם כך, תוכל להשתמש בפונקציה With הפועלת ברשומה ש- Match מחזירה:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
עבור דוגמאות אלה, הוסף פקד לחצן, הגדר את מאפיין OnSelect שלו לנוסחה זו ולאחר מכן בחר את הלחצן:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
נוסחה | תיאור | תוצאה |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
מצא את כל ההתאמות של "THE" במחרוזת הטקסט שהמשתנה pangram מכיל. המחרוזת מכילה שתי התאמות, אבל רק הראשונה מוחזרת משום שאתה משתמש ב- Match ולא ב- MatchAll. העמודה 'התאמות משנה' ריקה מכיוון שלא הוגדרו התאמות משנה. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
מצא את כל ההתאמות של "the" במחרוזת הטקסט שהמשתנה pangram מכיל. הטקסט תלוי רישיות, ולכן רק המופע השני של "the" נמצא. העמודה 'התאמות משנה' ריקה מכיוון שלא הוגדרו התאמות משנה. | |
MatchAll( pangram, "the", IgnoreCase ) |
מצא את כל ההתאמות של "the" במחרוזת הטקסט שהמשתנה pangram מכיל. במקרה זה, הבדיקה אינה תלוית רישיות, ולכן שני המופעים של המילה נמצאים. העמודה 'התאמות משנה' ריקה מכיוון שלא הוגדרו התאמות משנה. | |
MatchAll( pangram, "\b\wo\w\b" ) |
מוצא את כל המילים בנות שלוש האותיות עם "o" באמצע. שים לב ש- "brown" אינה נכללת משום שזו אינה מילה בת שלוש אותיות ולכן, היא לא מתאימה ל- "\b" (גבול המילה). | |
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 בגלריה:
במסך ריק, הוסף פקד Gallery אנכי ריק.
הגדר את המאפיין Items של הגלריה ל- MatchAll( pangram, "\w+" ) או MatchAll( pangram, MultipleLetters ).
בחר "הוסף פריט מהכרטיסיה 'הוספה'" באמצע פקד ה- gallery כדי לבחור את התבנית של הגלריה.
הוסף פקד Label לתבנית הגלריה.
הגדר את המאפיין Text של התווית ל- ThisItem.FullMatch.
הגלריה מלאה בכל מילה בטקסט לדוגמה שלנו. שנה את גודל התבנית של הגלריה ופקד התווית כדי לראות את כל המילים במסך אחד.