Excel Regex: จับคู่สตริงโดยใช้นิพจน์ทั่วไป

  • แบ่งปันสิ่งนี้
Michael Brown

ในบทช่วยสอนนี้ เราจะดูวิธีใช้ regex เพื่อจับคู่สตริงใน Excel อย่างเจาะลึก

เมื่อคุณต้องการหาค่าหนึ่งในช่วง ของเซลล์ คุณจะต้องใช้ฟังก์ชัน MATCH หรือ XMATCH เมื่อต้องการค้นหาสตริงเฉพาะในเซลล์ ฟังก์ชัน FIND และ SEARCH มีประโยชน์มาก และคุณจะทราบได้อย่างไรว่าเซลล์มีข้อมูลที่ตรงกับรูปแบบที่กำหนดหรือไม่ แน่นอน โดยใช้นิพจน์ทั่วไป แต่ Excel ไม่รองรับ regexes! ไม่ต้องกังวล เราจะบังคับให้ :)

    ฟังก์ชัน Excel VBA Regex เพื่อจับคู่สตริง

    เนื่องจากมันค่อนข้างชัดเจนจากหัวข้อ เพื่อที่จะใช้นิพจน์ทั่วไป ใน Excel คุณต้องสร้างฟังก์ชันของคุณเอง โชคดีที่ VBA ของ Excel มีวัตถุ RegExp ในตัว ซึ่งคุณสามารถใช้ในโค้ดของคุณได้ดังที่แสดงด้านล่าง:

    Public Function RegExpMatch(input_range As Range, pattern As String , optional match_case As Boolean = True ) As Variant Dim arRes() As Variant 'อาร์เรย์สำหรับจัดเก็บผลลัพธ์ Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long ' ดัชนีของแถวปัจจุบันในช่วงแหล่งที่มา ดัชนีของคอลัมน์ปัจจุบันในช่วงแหล่งที่มา จำนวนแถว จำนวนของ คอลัมน์ เมื่อเกิดข้อผิดพลาด GoTo ErrHandl RegExpMatch = arRes ตั้งค่า regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = รูปแบบ regex.Global = True regex.MultiLine = True ถ้า True = match_case จากนั้น regex.ignorecase = False อื่นๆ regex.ignorecase = True จบนิพจน์

    รูปแบบ : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b

    เพื่อให้เข้าใจสิ่งที่เกิดขึ้นที่นี่ดีขึ้น เรามาดูรายละเอียดแต่ละส่วนกัน :

    • ชื่อผู้ใช้ อาจประกอบด้วยตัวอักษร ตัวเลข ขีดล่าง จุด และขีดกลาง โปรดทราบว่า \w ตรงกับตัวอักษร ตัวเลข หรือขีดล่าง เราจะได้รับ regex ต่อไปนี้: [\w\.\-]+
    • ชื่อโดเมน อาจมีตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก ตัวเลข ยัติภังค์ (แต่ไม่อยู่ในตำแหน่งแรกหรือตำแหน่งสุดท้าย) และจุด (ในกรณีของโดเมนย่อย) เนื่องจากไม่อนุญาตให้ใช้เครื่องหมายขีดล่าง แทนที่จะใช้ \w เราจึงใช้ชุดอักขระที่แตกต่างกัน 3 ชุด: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
    • โดเมนระดับบนสุด ประกอบด้วยจุดตามด้วยตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก สามารถมีได้ตั้งแต่ 2 ถึง 24 ตัวอักษร (เป็น TLD ที่ยาวที่สุดในปัจจุบัน): \.[A-Za-z]{2,24}

    หมายเหตุ รูปแบบจะถือว่าชื่อโดเมนประกอบด้วยอักขระที่เป็นตัวอักษรและตัวเลขคละกันตั้งแต่ 2 ตัวขึ้นไป

    ด้วยข้อความต้นฉบับใน A5 และรูปแบบใน A5 สูตรจะใช้รูปแบบนี้:

    =RegExpMatch(A5, $A$2)

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

    รูปแบบ : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\.[a-z]{2,24}\b

    แต่ทำให้สูตรของคุณไม่คำนึงถึงขนาดตัวพิมพ์:

    =RegExpMatch(A5, $A$2, FALSE)

    สูตร Excel IF พร้อม regex ที่ตรงกัน

    เนื่องจาก inbuilt และ customฟังก์ชันเข้ากันได้ดี ไม่มีอะไรที่จะขัดขวางไม่ให้คุณใช้ร่วมกันในสูตรเดียว

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

    IF(RegExpMatch(…), [value_if_true], [value_if_false])

    ตัวอย่างเช่น หากสตริงใน A5 มีที่อยู่อีเมลที่ถูกต้อง คุณสามารถส่งคืน "ใช่"; มิฉะนั้น "ไม่"

    =IF(RegExpMatch(A5, $A$2,), "Yes", "No")

    นับหาก regex ตรงกัน

    เนื่องจากฟังก์ชันดั้งเดิมของ Excel ไม่รองรับนิพจน์ทั่วไป ไม่สามารถใส่ regex โดยตรงในฟังก์ชัน COUNTIS หรือ COUNTIFS โชคดีที่คุณสามารถเลียนแบบฟังก์ชันนี้โดยใช้ฟังก์ชันที่กำหนดเองของเรา

    สมมติว่าคุณใช้ regex เพื่อจับคู่หมายเลขโทรศัพท์และแสดงผลลัพธ์ในคอลัมน์ B หากต้องการทราบจำนวนเซลล์ที่มีหมายเลขโทรศัพท์ คุณเพียงแค่ต้อง เพื่อนับค่า TRUE ใน B5:B9 และสามารถทำได้ง่ายๆ โดยใช้สูตร COUNTIF มาตรฐาน:

    =COUNTIF(B5:B9, TRUE)

    ไม่ต้องการให้มีคอลัมน์เพิ่มเติมในเวิร์กชีตของคุณใช่หรือไม่ ไม่มีปัญหา. โปรดทราบว่าฟังก์ชันแบบกำหนดเองของเราสามารถประมวลผลได้หลายเซลล์ในแต่ละครั้ง และ SUM ของ Excel สามารถรวมค่าในอาร์เรย์ได้ นี่คือสิ่งที่คุณทำ:

    • ระบุช่วงอ้างอิงไปยัง RegExpMatch เพื่อให้ส่งกลับค่า อาร์เรย์ของค่า TRUE และ FALSE
    • ใช้การปฏิเสธสองครั้ง (--) เพื่อบังคับค่าตรรกะให้เป็นค่าหนึ่งและศูนย์
    • รับฟังก์ชัน SUM เพื่อเพิ่ม 1 และ 0 ในอาร์เรย์ผลลัพธ์

    =SUM(--RegExpMatch(A5:A9, $A$2))

    การจับคู่ Regex ด้วย Ultimate Suite

    ผู้ใช้ Ultimate Suite ของเราสามารถใช้ประโยชน์จากฟังก์ชัน Regex อันทรงพลังสี่ฟังก์ชันโดยไม่ต้องเพิ่มโค้ด VBA ใดๆ ลงในสมุดงาน เนื่องจากผสานรวมเข้ากับ Excel ได้อย่างราบรื่นระหว่างการติดตั้ง Add-in ฟังก์ชันที่กำหนดเองของเราได้รับการประมวลผลโดยเอ็นจิ้น .NET RegEx มาตรฐานและรองรับนิพจน์ทั่วไปแบบคลาสสิกที่มีคุณสมบัติครบถ้วน

    วิธีใช้ฟังก์ชัน RegexMatch ที่กำหนดเอง

    สมมติว่าคุณติดตั้ง Ultimate Suite เวอร์ชันล่าสุดแล้ว ( 2021.4 หรือใหม่กว่า) คุณสามารถสร้างสูตร Regex Match ได้ในสองขั้นตอนง่ายๆ:

    1. ในแท็บ Ablebits Data ในกลุ่ม Text ให้คลิก Regex Tools .

  • ในบานหน้าต่าง Regex Tools ให้ทำดังต่อไปนี้:
    • เลือก สตริงต้นฉบับ
    • ป้อนรูปแบบของคุณ
    • เลือกตัวเลือก จับคู่
    • หากต้องการให้ผลลัพธ์เป็นสูตร ไม่ใช่ค่า ให้เลือกปุ่ม แทรกเป็นสูตร ช่องทำเครื่องหมาย
    • คลิกปุ่ม จับคู่

    สักครู่ต่อมา ฟังก์ชัน AblebitsRegexMatch จะถูกแทรกในคอลัมน์ใหม่ทางด้านขวาของข้อมูลของคุณ

    ในภาพหน้าจอด้านล่าง ฟังก์ชันจะตรวจสอบว่าสตริงในคอลัมน์ A มีตัวเลข 7 หลักหรือไม่ ตัวเลขหรือไม่

    เคล็ดลับ:

    • ฟังก์ชัน tion สามารถ แทรก โดยตรงในเซลล์ ผ่านกล่องโต้ตอบ แทรกฟังก์ชัน มาตรฐาน ซึ่งจัดหมวดหมู่ภายใต้ AblebitsUDFs
    • โดยค่าเริ่มต้น นิพจน์ทั่วไปจะถูกเพิ่มลงในสูตร แต่คุณยังสามารถเก็บ ในเซลล์ที่แยกต่างหาก สำหรับสิ่งนี้ เพียงใช้การอ้างอิงเซลล์สำหรับอาร์กิวเมนต์ที่ 2
    • ตามค่าเริ่มต้น ฟังก์ชันจะ คำนึงถึงตัวพิมพ์เล็กและใหญ่ สำหรับการจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ให้ใช้รูปแบบ (?i)

    สำหรับข้อมูลเพิ่มเติม โปรดดูที่ฟังก์ชัน AblebitsRegexMatch

    นั่นคือวิธีการจับคู่นิพจน์ทั่วไปใน Excel ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!

    ดาวน์โหลดได้

    ตัวอย่าง Excel Regex Match (ไฟล์ .xlsm)

    Ultimate Suite 14- วัน เวอร์ชันที่ทำงานได้อย่างสมบูรณ์ (ไฟล์ .exe)

    ถ้า cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 ถึง cntInputRows, 1 ถึง cntInputCols) สำหรับ iInputCurRow = 1 ถึง cntInputRows สำหรับ iInputCurCol = 1 ถึง cntInputCols arRes(iInputCurRow, iInputCurCol) = regexrange. .Cells(iInputCurRow, iInputCurCol).Value) Next Next RegExpMatch = arRes Exit Function ErrHandl: RegExpMatch = CVErr(xlErrValue) End Function

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

    หมายเหตุ หลังจากใส่โค้ดแล้ว อย่าลืมบันทึกไฟล์ของคุณเป็น เวิร์กบุ๊กที่เปิดใช้งานมาโคร (.xlsm)

    ไวยากรณ์ RegExpMatch

    ฟังก์ชัน RegExpMatch จะตรวจสอบว่าส่วนใดของสตริงต้นฉบับตรงกับนิพจน์ทั่วไปหรือไม่ ผลลัพธ์คือค่าบูลีน: TRUE หากพบการจับคู่อย่างน้อยหนึ่งรายการ หากพบการจับคู่เป็น FALSE มิฉะนั้น

    ฟังก์ชันที่กำหนดเองของเรามี 3 อาร์กิวเมนต์ - จำเป็นต้องมีสองตัวแรก และตัวสุดท้ายเป็นตัวเลือก:

    RegExpMatch(text , รูปแบบ, [match_case])

    ตำแหน่ง:

    • ข้อความ (จำเป็น) - หนึ่งสตริงขึ้นไปสำหรับการค้นหา สามารถระบุเป็นการอ้างอิงเซลล์หรือช่วงได้
    • รูปแบบ (จำเป็น) - นิพจน์ทั่วไปที่จะจับคู่ เมื่อวางโดยตรงในสูตร รูปแบบจะต้องอยู่ในเครื่องหมายคำพูด
    • Match_case (ไม่บังคับ) - กำหนดการจับคู่พิมพ์. หากเป็น TRUE หรือละเว้น (ค่าเริ่มต้น) จะทำการจับคู่ตามตัวพิมพ์เล็กและใหญ่ ถ้า FALSE - ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่

    ฟังก์ชันนี้ทำงานใน Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 และ Excel 2010 ทุกรุ่น

    3 สิ่งที่คุณ ควรทราบเกี่ยวกับ RegExpMatch

    ก่อนที่เราจะไปถึงการคำนวณเชิงปฏิบัติ โปรดสังเกตประเด็นต่อไปนี้ที่อธิบายความทางเทคนิคบางประการ:

    1. ฟังก์ชันสามารถประมวลผล เซลล์เดียว หรือ ช่วงของเซลล์ ในกรณีหลัง ผลลัพธ์จะถูกส่งกลับในเซลล์ข้างเคียงในรูปแบบของอาร์เรย์ไดนามิกหรือช่วงการรั่วไหล ดังที่แสดงในตัวอย่างนี้
    2. ตามค่าเริ่มต้น ฟังก์ชันคือ คำนึงถึงตัวพิมพ์เล็กและใหญ่ . หากต้องการละเว้นตัวพิมพ์ข้อความ ให้ตั้งค่าอาร์กิวเมนต์ match_case เป็น FALSE เนื่องจากข้อจำกัดของ VBA Regexp จึงไม่รองรับรูปแบบที่ไม่คำนึงถึงขนาดตัวพิมพ์ (?i)
    3. หากไม่พบรูปแบบที่ถูกต้อง ฟังก์ชันจะส่งกลับ FALSE ถ้า รูปแบบไม่ถูกต้อง เครื่องหมาย #VALUE! เกิดข้อผิดพลาด

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

    วิธีใช้ regex เพื่อจับคู่สตริงใน Excel

    เมื่อสตริงทั้งหมดที่คุณต้องการจับคู่มี รูปแบบเดียวกันนิพจน์ทั่วไปเป็นทางออกที่ดี

    สมมติว่าคุณมีช่วงของเซลล์ (A5:A9) ที่มีรายละเอียดต่างๆ เกี่ยวกับบางรายการ คุณต้องการทราบว่าเซลล์ใดมี SKU สมมติว่าแต่ละ SKU ประกอบด้วยตัวพิมพ์ใหญ่ 2 ตัว ยัติภังค์ 1 ตัว และตัวเลข 3 ตัว คุณสามารถจับคู่พวกมันโดยใช้นิพจน์ต่อไปนี้

    รูปแบบ : \b[A-Z]{2}-\ d{3}\b

    โดยที่ [A-Z]{2} หมายถึงอักษรตัวพิมพ์ใหญ่ 2 ตัวจาก A ถึง Z และ \d{3} หมายถึงตัวเลข 3 หลักตั้งแต่ 0 ถึง 9 อักขระ \b หมายถึงคำ ขอบเขต หมายความว่า SKU เป็นคำที่แยกจากกัน และไม่ได้เป็นส่วนหนึ่งของสตริงที่ใหญ่กว่า เช่น 23-MAR-2022

    เมื่อสร้างรูปแบบแล้ว เราก็สามารถเขียนสูตรต่อไปได้ โดยพื้นฐานแล้ว การใช้ฟังก์ชันที่กำหนดเองนั้นไม่แตกต่างจากฟังก์ชันเนทีฟ ทันทีที่คุณเริ่มพิมพ์สูตร ชื่อของฟังก์ชันจะปรากฏในรายการที่แนะนำโดยการทำให้สมบูรณ์อัตโนมัติของ Excel อย่างไรก็ตาม มีความแตกต่างเล็กน้อยใน Dynamic Array Excel (Microsoft 365 และ Excel 2021) และ Excel แบบดั้งเดิม (เวอร์ชัน 2019 และเก่ากว่า)

    จับคู่สตริงในเซลล์เดียว

    จับคู่สตริง ในเซลล์เดียว ให้อ้างถึงเซลล์นั้นในอาร์กิวเมนต์แรก อาร์กิวเมนต์ที่สองควรมีนิพจน์ทั่วไป

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    รูปแบบสามารถเก็บไว้ในเซลล์ที่กำหนดไว้ล่วงหน้า ซึ่งถูกล็อกด้วยการอ้างอิงแบบสัมบูรณ์ ($A$2):<3

    =RegExpMatch(A5, $A$2)

    หลังจากป้อนสูตรในเซลล์แรกแล้ว คุณสามารถลากลงไปที่แถวอื่นๆ ทั้งหมดได้

    วิธีนี้ทำงานได้อย่างสวยงามใน Excel ทุกรุ่น .

    จับคู่สตริงในหลายเซลล์พร้อมกัน

    หากต้องการจับคู่หลายสตริงด้วยสูตรเดียว รวมการอ้างอิงช่วงในอาร์กิวเมนต์แรก:

    =RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")

    ใน Excel 365 และ Excel 2021 ที่รองรับไดนามิกอาร์เรย์ ซึ่งทำงานในลักษณะนี้ - คุณพิมพ์สูตรในเซลล์แรก กด Enter และสูตรจะขยายลงในเซลล์ด้านล่างโดยอัตโนมัติ

    ใน Excel 2019 และรุ่นก่อนหน้า ทำงานเป็นสูตรอาร์เรย์ CSE แบบดั้งเดิมเท่านั้น ซึ่งป้อนในช่วงของเซลล์และกรอกโดยการกดแป้น Ctrl + Shift + Enter พร้อมกัน

    Regex เพื่อให้ตรงกับตัวเลข

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

    Regex เพื่อให้ตรงกับตัวเลขใดก็ได้

    เพื่อให้ตรงกับตัวเลขและความยาวเท่าใดก็ได้ ให้ใส่ตัวระบุ + หลังเครื่องหมาย / d ซึ่งระบุว่าให้ค้นหาตัวเลขที่มี 1 หลักขึ้นไป

    รูปแบบ : \d+

    =RegExpMatch(A5:A9, "\d+")

    Regex เพื่อจับคู่จำนวนของความยาวเฉพาะ

    หากเป้าหมายของคุณคือการจับคู่ค่าตัวเลขที่มีจำนวนหลัก ให้ใช้ \d ร่วมกับตัวระบุที่เหมาะสม

    ตัวอย่างเช่น เพื่อให้ตรงกับหมายเลขใบแจ้งหนี้ที่มี 7 หลักพอดี คุณต้องใช้ \d{7} อย่างไรก็ตามโปรดจำไว้ว่ามันจะตรงกับ 7ตามที่คาดไว้:

    หมายเหตุ:

    • ไม่มีการตรวจสอบรหัสสากล ดังนั้นจึงอาจมีหรือไม่มีอยู่ก็ได้
    • ในนิพจน์ทั่วไป \s หมายถึงอักขระช่องว่างใดๆ เช่น ช่องว่าง แท็บ การขึ้นบรรทัดใหม่ หรือการขึ้นบรรทัดใหม่ หากต้องการให้เว้นวรรคเท่านั้น ให้ใช้ [-\ ] แทน [-\.\s]
    • Regex ไม่ตรงกับอักขระ

      หากต้องการค้นหาสตริงที่ไม่มีอักขระบางตัว คุณสามารถใช้คลาสอักขระที่ปฏิเสธ [^ ] ที่ตรงกัน อะไรก็ได้ที่ไม่อยู่ในวงเล็บ ตัวอย่างเช่น:

      • [^13] จะจับคู่อักขระเดี่ยวใดๆ ที่ไม่ใช่ 1 หรือ 3
      • [^1-3] จะจับคู่อักขระใดๆ ที่ไม่ใช่ 1 2 หรือ 3 (เช่น ตัวเลขใดก็ได้ตั้งแต่ 1 ถึง 3)

      ในรายการหมายเลขโทรศัพท์ สมมติว่าคุณต้องการค้นหาหมายเลขที่ไม่มีรหัสประเทศ โปรดทราบว่ารหัสสากลใด ๆ ที่มีเครื่องหมาย + คุณสามารถใช้คลาสอักขระ [^\+] เพื่อค้นหาสตริงที่ไม่มีเครื่องหมายบวก สิ่งสำคัญคือต้องตระหนักว่านิพจน์ด้านบนตรงกับอักขระเดี่ยวใดๆ ที่ไม่ใช่ + เนื่องจากหมายเลขโทรศัพท์สามารถอยู่ที่ใดก็ได้ในสตริง โดยไม่จำเป็นต้องอยู่ต้นสุด จึงเพิ่มตัวระบุ * เพื่อตรวจสอบอักขระแต่ละตัวที่ตามมา จุดยึด start ^ และ end $ ช่วยให้มั่นใจได้ว่าสตริงทั้งหมดได้รับการประมวลผล ด้วยเหตุนี้ เราจึงได้นิพจน์ทั่วไปด้านล่างที่ระบุว่า "ไม่ตรงกับอักขระ + ในตำแหน่งใดๆ ในสตริง"

      รูปแบบ :^[^\+]*$

      =RegExpMatch(A5, "^[^\+]*$")

      Regex ไม่ตรงกับสตริง

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

      สมมติว่าคุณต้องการค้นหาสตริงที่ ไม่มี คำว่า "lemons" นิพจน์ทั่วไปนี้จะทำงานได้ดี:

      รูปแบบ : ^((?!lemons).)*$

      เห็นได้ชัดว่าจำเป็นต้องมีคำอธิบายบางอย่างที่นี่ มองไปข้างหน้าในแง่ลบ (?!lemons) มองไปทางขวาเพื่อดูว่าไม่มีคำว่า "lemons" ข้างหน้าหรือไม่ หากไม่มี "มะนาว" จุดนั้นจะตรงกับอักขระใดๆ ยกเว้นการขึ้นบรรทัดใหม่ นิพจน์ด้านบนทำการตรวจสอบเพียงครั้งเดียว และตัวระบุ * จะทำซ้ำเป็นศูนย์ครั้งหรือมากกว่านั้น ตั้งแต่จุดเริ่มต้นของสตริงที่ยึดด้วย ^ จนถึงจุดสิ้นสุดของสตริงที่ยึดด้วย $

      หากต้องการละเว้นตัวพิมพ์ข้อความ เราตั้งค่าอาร์กิวเมนต์ที่ 3 เป็น FALSE เพื่อให้ฟังก์ชันของเราไม่คำนึงถึงขนาดตัวพิมพ์:

      =RegExpMatch(A5, $A$2, FALSE)

      เคล็ดลับและหมายเหตุ:

      • regex ด้านบนใช้ได้กับสตริง บรรทัดเดียว เท่านั้น ในกรณีของสตริงบรรทัดมิลติ อักขระ ^ และ $ จะจับคู่จุดเริ่มต้นและจุดสิ้นสุดของแต่ละบรรทัด แทนที่จะเป็นจุดเริ่มต้นและจุดสิ้นสุดของสตริงอินพุต ดังนั้น regex จึงค้นหาเฉพาะในบรรทัดแรกเท่านั้น
      • ในการจับคู่สตริงที่ ไม่ขึ้นต้น กับข้อความบางข้อความ ให้ใช้นิพจน์ทั่วไป เช่น ^(?!lemons).*$
      • หากต้องการจับคู่สตริงที่ ไม่จบ ด้วยข้อความบางข้อความ ให้รวมสตริงส่วนท้ายยึดในรูปแบบการค้นหา: ^((?!lemons$).)*$

      การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่

      ในนิพจน์ทั่วไปแบบคลาสสิก มีรูปแบบพิเศษสำหรับ การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ (?i) ซึ่งไม่รองรับใน VBA RegExp เพื่อเอาชนะข้อจำกัดนี้ ฟังก์ชันแบบกำหนดเองของเรายอมรับอาร์กิวเมนต์ตัวเลือกที่ 3 ชื่อ match_case หากต้องการจับคู่โดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ให้ตั้งค่าเป็น FALSE

      สมมติว่าคุณต้องการระบุวันที่ เช่น 1-มี.ค.-22 หรือ 01-มี.ค.-2022 เพื่อให้ตรงกับรูปแบบ dd-mmm-yyyy และ d-mmm-yy เราใช้นิพจน์ทั่วไปต่อไปนี้

      รูปแบบ : \b\d{1,2}-(ม.คหลักที่ใดก็ได้ในสตริง รวมทั้งตัวเลข 10 หลักหรือ 100 หลัก หากนี่ไม่ใช่สิ่งที่คุณกำลังมองหา ให้ใส่ขอบเขตของคำ \b ทั้งสองด้าน

      รูปแบบ : \b\d{7}\b

      =RegExpMatch(A5:A9, "\b\d{7}\b")

      Regex เพื่อจับคู่หมายเลขโทรศัพท์

      เนื่องจากสามารถเขียนหมายเลขโทรศัพท์ในรูปแบบต่างๆ ได้ การจับคู่จึงต้องใช้นิพจน์ทั่วไปที่ซับซ้อนมากขึ้น

      ในชุดข้อมูลด้านล่าง เราจะค้นหาตัวเลข 10 หลักที่มี 3 หลักใน 2 กลุ่มแรก และ 4 หลักในกลุ่มสุดท้าย กลุ่มสามารถคั่นด้วยจุด ยัติภังค์หรือเว้นวรรค กลุ่มแรกอาจอยู่ในวงเล็บหรือไม่ก็ได้

      รูปแบบ: (\(\d{3}\)

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้