שתף באמצעות


הפונקציות 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
Email מתאים לכתובת דואר המכילה סמל "ב-" ("@") ושם תחום המכיל נקודה (".") .+\@.+\\.[^\\.]{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.
MatchAll( pangram, "the", IgnoreCase ) מצא את כל ההתאמות של "the" במחרוזת הטקסט שהמשתנה pangram מכיל. במקרה זה, הבדיקה אינה תלוית רישיות, ולכן שני המופעים של המילה נמצאים. העמודה 'התאמות משנה' ריקה מכיוון שלא הוגדרו התאמות משנה. MatchAll עם IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) מוצא את כל המילים בנות שלוש האותיות עם "o" באמצע. שים לב ש- "brown" אינה נכללת משום שזו אינה מילה בת שלוש אותיות ולכן, היא לא מתאימה ל- "\b" (גבול המילה). MatchAll עבור pangram עם b, ‏wo‏, w ו- 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 בגלריה:

  1. במסך ריק, הוסף פקד Gallery‎ אנכי ריק.

  2. הגדר את המאפיין Items‎ של הגלריה ל- MatchAll( pangram, "\w+" ) או MatchAll( pangram, MultipleLetters ).

    גלריית פריטים.

  3. בחר "הוסף פריט מהכרטיסיה 'הוספה'" באמצע פקד ה- gallery כדי לבחור את התבנית של הגלריה.

  4. הוסף פקד Label לתבנית הגלריה.

  5. הגדר את המאפיין Text‎ של התווית ל- ThisItem.FullMatch.

    הגלריה מלאה בכל מילה בטקסט לדוגמה שלנו. שנה את גודל התבנית של הגלריה ופקד התווית כדי לראות את כל המילים במסך אחד.

    מאפיין טקסט.