แชร์ผ่าน


ฟังก์ชัน IsMatch, Match และ MatchAll

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง Power Platform CLI

ทดสอบการจับคู่หรือแยกส่วนของสตริงข้อความตามรูปแบบ

คำอธิบาย

ฟังก์ชัน IsMatch จะทดสอบว่าสตริงข้อความตรงกับรูปแบบที่อาจประกอบด้วยอักขระทั่วไป รูปแบบที่กำหนดไว้ล่วงหน้า หรือ นิพจน์ปกติ ฟังก์ชัน Match และ MatchAll ส่งคืนสิ่งที่ถูกจับคู่ รวมถึงการจับคู่ย่อย

ใช้ IsMatch เพื่อตรวจสอบความถูกต้องของสิ่งที่ผู้ใช้พิมพ์ในตัวควบคุม การป้อนข้อความ ตัวอย่างเช่น คุณสามารถยืนยันว่าผู้ใช้ได้ใส่ที่อยู่อีเมลที่ถูกต้องก่อนที่จะบันทึกผลลัพธ์ลงในแหล่งข้อมูลของคุณหรือไม่ ถ้ารายการไม่ตรงกับเกณฑ์ของคุณ ให้เพิ่มตัวควบคุมอื่นที่พร้อมท์ให้ผู้ใช้แก้ไขรายการ

ใช้ Match เพื่อแยกสตริงข้อความแรกที่ตรงกับรูปแบบ และ MatchAll เพื่อแยกสตริงข้อความทั้งหมดที่ตรงกัน คุณยังสามารถแยกการจับคู่ย่อยเพื่อแยกสตริงที่ซับซ้อน

Match ส่งกลับเรกคอร์ดข้อมูลสำหรับการจับคู่ครั้งแรกที่พบ และ MatchAll ส่งกลับตารางของเรกคอร์ดสำหรับทุกการจับคู่ที่พบ เรกคอร์ด หรือหลายเรกคอร์ด ประกอบด้วย:

Column ชนิด Description
named sub‑match or sub‑matches ข้อความ การจับคู่ย่อยที่มีชื่อแต่ละรายการ จะมีคอลัมน์ของตัวเอง สร้างการจับคู่ย่อยที่มีชื่อ โดยใช้ (?<name>...) ในนิพจน์ปกติ หากการจับคู่ย่อยที่มีชื่อมีชื่อเดียวกับหนึ่งในคอลัมน์ที่กำหนดไว้ล่วงหน้า (ด้านล่าง) การจับคู่ย่อยจะมีความสำคัญกว่า และจะมีการสร้างคำเตือน เพื่อหลีกเลี่ยงคำเตือนนี้ให้เปลี่ยนชื่อการจับคู่ย่อย
FullMatch Text สตริงข้อความทั้งหมดที่ตรงกัน
StartMatch ตัวเลข ตำแหน่งเริ่มต้นของการจับคู่ภายในสตริงข้อความป้อนเข้า อักขระแรกของสตริง ส่งกลับ 1
SubMatches ตารางคอลัมน์เดี่ยวของข้อความ (คอลัมน์ ค่า) ตารางของการจับคู่ย่อยที่มีชื่อและไม่มีชื่อในลำดับที่ปรากฏในนิพจน์ทั่วไป โดยทั่วไปการจับคู่ย่อยที่มีชื่อนั้น ง่ายต่อการทำงานและได้รับการสนับสนุน ใช้ฟังก์ชัน ForAll หรือฟังก์ชัน Last( FirstN( ... ) ) เพื่อทำงานกับการจับคู่ย่อยแต่ละรายการ หากไม่มีการจับคู่ย่อยในนิพจน์ทั่วไป ตารางนี้จะแสดง แต่ว่างเปล่า

ฟังก์ชันเหล่านี้รองรับ MatchOptions ตามค่าเริ่มต้น:

  • ฟังก์ชันเหล่านี้ทำการจับคู่แบบตรงตามตัวพิมพ์ใหญ่ - เล็ก ใช้ MatchOptions.IgnoreCase เพื่อทำการจับคู่แบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • IsMatch ตรงกับสตริงข้อความทั้งหมด (Complete MatchOption) ขณะที่ Match and MatchAll ค้นหาคู่ที่ใดก็ได้ในสตริงข้อความ (Contains MatchOption) ใช้ CompleteContainsBeginsWith หรือ EndsWith ตามความเหมาะสมกับสถานการณ์ของคุณ

IsMatch จะส่งกลับ จริง ถ้าสตริงข้อความตรงกับรูปแบบหรือ เท็จ ถ้าไม่ตรงกับรูปแบบ Match จะส่งกลับ blank ถ้าไม่พบการจับคู่ที่สามารถทดสอบกับฟังก์ชัน IsBlank MatchAll จะส่งกลับตารางเปล่า ถ้าไม่พบการจับคู่ที่สามารถทดสอบกับฟังก์ชัน IsEmpty

หากคุณกำลังใช้ MatchAll เพื่อแยกสตริงข้อความ พิจารณาใช้ฟังก์ชัน Split ซึ่งง่ายกว่าและเร็วกว่าในการใช้

รูปแบบ

จุดสำคัญในการใช้ฟังก์ชันเหล่านี้คือการอธิบายรูปแบบการจับคู่ คุณอธิบายรูปแบบในสตริงข้อความเป็นชุดของ:

  • อักขระธรรมดา เช่น "abc" หรือ "123"
  • รูปแบบที่กำหนดไว้ล่วงหน้า เช่น LetterMultipleDigits หรือ Email (enum Match จะกำหนดรูปแบบเหล่านี้)
  • รหัสนิพจน์ปกติ เช่น "\d+\s+\d+" หรือ "[a-z]+"

รวมองค์ประกอบเหล่านี้โดยใช้ ตัวดำเนินการรวมสตริง & ตัวอย่างเช่น "abc" & Digit & "\s+" เป็นรูปแบบที่ถูกต้องที่จับคู่อักขระ "a" "b" และ "c" ตามด้วยตัวเลขจาก 0 ถึง 9 ที่ตามด้วยอักขระช่องว่างอย่างน้อยหนึ่งตัว

อักขระธรรมดา

รูปแบบที่ง่ายที่สุดคือลำดับอักขระธรรมดาที่จับคู่ให้ตรงกันทั้งหมด

ตัวอย่างเช่น เมื่อใช้กับฟังก์ชัน IsMatch สตริง "Hello" ตรงกับรูปแบบ "Hello" อย่างแน่นอน ไม่มากกว่านี้และไม่น้อยกว่านี้ สตริง "hello!" ไม่ตรงกับรูปแบบเนื่องจากเครื่องหมายอัศเจรีย์ที่ส่วนท้าย และตัวพิมพ์ไม่ถูกต้องสำหรับตัวอักษร "h" (ดู MatchOptions สำหรับวิธีการปรับเปลี่ยนลักษณะการทำงานนี้)

ในภาษาของรูปแบบ อักขระบางตัวจะถูกเก็บไว้เพื่อวัตถุประสงค์เฉพาะ เมื่อต้องการใช้งานอักขระเหล่านี้ ไม่ว่าจะนำหน้าอักขระด้วย \ (เครื่องหมายทับขวา) ที่จะระบุว่าควรใช้อักขระตามตัวอักษร หรือใช้รูปแบบที่กำหนดไว้ล่วงหน้ารูปแบบใดรูปแบบหนึ่ง ซึ่งอธิบายไว้ในส่วนท้ายของหัวข้อนี้ ตารางนี้จะแสดงรายการอักขระพิเศษ:

อักขระพิเศษ คำอธิบาย
. จุดหรือมหัพภาค
? เครื่องหมายปรัศนีย์
* เครื่องหมายดอกจัน
+ บวก
( ) เครื่องหมายวงเล็บ
[ ] เครื่องหมายวงเล็บเหลี่ยม
{ } วงเล็บปีกกา
^ เครื่องหมายตก
$ สัญลักษณ์ดอลลาร์
| แถบแนวตั้งหรือไปป์
\ เครื่องหมายทับขวา

ตัวอย่างเช่น คุณสามารถจับคู่ "Hello?" โดยใช้รูปแบบ "Hello\?" ด้วยเครื่องหมายทับขวาหน้าเครื่องหมายคำถาม

รูปแบบที่กำหนดไว้ล่วงหน้า

รูปแบบที่กำหนดไว้ล่วงหน้าจะให้วิธีการจับคู่ ไม่ว่าชุดอักขระหนึ่งชุดหรือลำดับของอักขระหลายๆ ตัว อย่างง่าย ใช้ ตัวดำเนินการรวมสตริง & เพื่อรวมสตริงข้อความของคุณเองกับสมาชิกของ Match enum:

enum Match คำอธิบาย นิพจน์ปกติ
Any จับคู่อักขระใดๆ .
Comma จับคู่จุลภาค ,
Digit จับคู่ตัวเลขเดี่ยว ("0" ถึง "9") \d
Email จับคู่ที่อยู่อีเมลที่มีเครื่องหมาย "at" ("@") และชื่อโดเมนที่มีเครื่องหมายมหัพภาค (".") .+\@.+\\.[^\\.]{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
Tab จับคู่อักขระแท็บ \t

ตัวอย่างเช่น รูปแบบ "A" & MultipleDigits จะจับคู่ตัวอักษร "A" ตามด้วยตัวเลขอย่างน้อยหนึ่งตัว

นิพจน์ปกติ

รูปแบบที่ฟังก์ชันเหล่านี้ใช้คือ นิพจน์ปกติ อักขระธรรมดาและรุปแบบที่กำหนดไว้ล่วงหน้าที่อธิบายไว้ก่อนหน้าในหัวข้อนี้ จะช่วยสร้างนิพจน์ปกติ

นิพจน์ปกติมีประสิทธิภาพมาก มีในภาษาสำหรับการเขียนโปรแกรมหลายภาษา และใช้เพื่อจุดประสงค์ที่หลากหลาย พวกเขายังสามารถดูเหมือนเครื่องหมายลำดับวรรคตอนแบบสุ่ม บทความนี้ไม่ได้อธิบายทุกแง่มุมของนิพจน์ปกติ แต่มีข้อมูล บทช่วยสอน และเครื่องมือต่างๆ อยู่บนเว็บที่

นิพจน์ปกติมาในภาษาเฉพาะที่แตกต่างกัน และ Power Apps ใช้ตัวแปรของภาษาเฉพาะของ JavaScript ดู ไวยากรณ์นิพจน์ปกติ สำหรับการแนะนำให้รู้จักกับไวยากรณ์ รองรับการจับคู่ย่อยที่มีชื่อ (บางครั้งเรียกว่ากลุ่มการจับภาพที่มีชื่อ):

  • การจับคู่ย่อยที่มีชื่อ: (?<name> ...)
  • Named backreferences: \k<name>

ในตาราง enum Match ก่อนหน้าในหัวข้อนี้ แต่ละ enum จะปรากฏในแถวเดียวกับนิพจน์ทั่วไปที่สอดคล้องกัน

ตัวเลือกจับคู่

คุณสามารถปรับเปลี่ยนลักษณะการทำงานของฟังก์ชันเหล่านี้ โดยระบุตัวเลือกอย่างน้อยหนึ่งรายการ ซึ่งคุณสามารถรวมโดยใช้ตัวดำเนินการรวมสตริง (&)

Enum 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 ] )

  • ข้อความ - จำเป็น สตริงข้อความที่จะทดสอบ
  • รูปแบบ - จำเป็นต้องมี รูปแบบที่จะทดสอบ เป็นสตริงข้อความ รวมรูปแบบที่กำหนดไว้ล่วงหน้าที่ Enum Match กำหนด หรือระบุนิพจน์ปกติ รูปแบบ ต้องเป็นสูตรคงที่โดยไม่มีตัวแปร แหล่งข้อมูล หรือการอ้างอิงแบบไดนามิกอื่นๆ ที่เปลี่ยนแปลงเมื่อแอปทำงาน
  • ตัวเลือก - ไม่บังคับ การรวมสตริงข้อความของค่า enum MatchOptions ตามค่าเริ่มต้น จะใช้ MatchOptions.Complete

Match( Text, Pattern [, Options ] )

  • ข้อความ - จำเป็น สตริงข้อความที่จะจับคู่
  • รูปแบบ - จำเป็นต้องมี รูปแบบที่จะจับคู่ เป็นสตริงข้อความ รวมรูปแบบที่กำหนดไว้ล่วงหน้าที่ Enum Match กำหนด หรือระบุนิพจน์ปกติ รูปแบบ ต้องเป็นสูตรคงที่โดยไม่มีตัวแปร แหล่งข้อมูล หรือการอ้างอิงแบบไดนามิกอื่นๆ ที่เปลี่ยนแปลงเมื่อแอปทำงาน
  • ตัวเลือก - ไม่บังคับ การรวมสตริงข้อความของค่า enum MatchOptions ตามค่าเริ่มต้น จะใช้ MatchOptions.Contains

MatchAll( Text, Pattern [, Options ] )

  • ข้อความ - จำเป็น สตริงข้อความที่จะจับคู่
  • รูปแบบ - จำเป็นต้องมี รูปแบบที่จะจับคู่ เป็นสตริงข้อความ รวมรูปแบบที่กำหนดไว้ล่วงหน้าที่ Enum Match กำหนด หรือระบุนิพจน์ปกติ รูปแบบ ต้องเป็นสูตรคงที่โดยไม่มีตัวแปร แหล่งข้อมูล หรือการอ้างอิงแบบไดนามิกอื่นๆ ที่เปลี่ยนแปลงเมื่อแอปทำงาน
  • ตัวเลือก - ไม่บังคับ การรวมสตริงข้อความของค่า enum MatchOptions ตามค่าเริ่มต้น จะใช้ MatchOptions.Contains

ตัวอย่าง IsMatch

อักขระธรรมดา

สมมติว่า แอปของคุณมีตัวควบคุม การป้อนข้อความ ชื่อว่า 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)?" ) จับคู่จำนวนสกุลเงินที่เป็นค่าบวก ถ้าค่าป้อนเข้ามีจุดทศนิยม ค่าป้อนเข้าต้องมีอักขระตัวเลข 2 ตัวตามหลังจุดทศนิยมด้วย ตัวอย่างเช่น 3.00 ถูกต้อง แต่ 3.1 ไม่ถูกต้อง true
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) จับคู่จำนวนสกุลเงินที่เป็นค่าบวกและค่าลบ ถ้าค่าป้อนเข้ามีจุดทศนิยม ค่าป้อนเข้าต้องมีอักขระตัวเลข 2 ตัวตามหลังจุดทศนิยมด้วย 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})" ) ตรวจสอบความถูกต้องของรหัสผ่านที่เดายาก ซึ่งต้องมีอักขระแปดตัว เก้าตัว หรือ 10 ตัว นอกจากตัวเลขอย่างน้อยหนึ่งตัวและอักขระตัวอักษรอย่างน้อยหนึ่งตัว สตริงต้องไม่มีอักขระพิเศษ false

อย่าง Match and 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 ว่างเปล่า
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) แยกส่วน ภาษา สคริปต์ และภูมิภาคของแท็กภาษา ที่ฟังก์ชัน 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 คอลัมน์ SubMatches ว่างเปล่าเนื่องจากไม่มีการกำหนดการจับคู่ย่อย {
FullMatch: "The"
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) ค้นหาการจับคู่ทั้งหมดของ "the" ในสตริงข้อความที่ตัวแปร pangram ประกอบด้วย การทดสอบจะคำนึงถึงขนาดตัวพิมพ์ ดังนั้นจะพบอินสแตนซ์ที่สองของ "the" เท่านั้น คอลัมน์ SubMatches ว่างเปล่าเนื่องจากไม่มีการกำหนดการจับคู่ย่อย MatchAll สำหรับ pangram
MatchAll( pangram, "the", IgnoreCase ) ค้นหาการจับคู่ทั้งหมดของ "the" ในสตริงข้อความที่ตัวแปร pangram ประกอบด้วย ในกรณีนี้การทดสอบจะไม่คำนึงถึงขนาดตัวพิมพ์ ดังนั้นจึงพบทั้งสองอินสแตนซ์ คอลัมน์ SubMatches ว่างเปล่าเนื่องจากไม่มีการกำหนดการจับคู่ย่อย 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. ในหน้าจอที่ว่างเปล่า แทรกแนวตั้งที่ว่างเปล่า ตัวควบคุม แกลเลอรี

  2. ตั้งค่าคุณสมบัติ Items ของแกลเลอรี่ เป็น MatchAll( pangram, "\w+" ) หรือ MatchAll( pangram, MultipleLetters )

    แกลเลอรี่รายการ

  3. เลือก "เพิ่มรายการจากแท็บแทรก" ที่อยู่ตรงกลางของตัวควบคุมแกลเลอรี เพื่อเลือกเทมเพลตของแกลเลอรี

  4. เพิ่มตัวควบคุม ป้ายชื่อ ลงในเทมเพลตของแกลเลอรี

  5. ตั้งค่าคุณสมบัติ Text ของป้ายกำกับ เป็น ThisItem.FullMatch

    แกลเลอรี่เต็มไปด้วยแต่ละคำในข้อความตัวอย่างของเรา ปรับขนาดเทมเพลตของแกลเลอรี่และตัวควบคุมป้ายกำกับเพื่อดูคำทั้งหมดในหน้าจอเดียว

    คุณสมบัติ Text