Regex Excel-ში სტრიქონების ამოსაღებად (ერთი ან ყველა შესატყვისი)

  • გააზიარეთ ეს
Michael Brown

Სარჩევი

ამ სახელმძღვანელოში თქვენ შეისწავლით თუ როგორ გამოიყენოთ რეგულარული გამონათქვამები Excel-ში მოცემულ შაბლონის შესატყვისი ქვესტრიქონების მოსაძებნად და ამოსაღებად.

Microsoft Excel გთავაზობთ უამრავ ფუნქციას ტექსტის ამოსაღებად. უჯრედებიდან. ამ ფუნქციებს შეუძლიათ გაუმკლავდნენ სტრიქონების ამოღების გამოწვევებს თქვენს სამუშაო ფურცლებში. უმეტესობა, მაგრამ არა ყველა. როდესაც ტექსტის ფუნქციები დაბრკოლდება, რეგულარული გამონათქვამები შველის. დაელოდეთ… Excel-ს არ აქვს RegEx ფუნქციები! მართალია, არ არის ჩაშენებული ფუნქციები. მაგრამ არაფერი შეგიშლით ხელს თქვენის გამოყენებაში :)

    Excel VBA Regex ფუნქცია სტრიქონების ამოსაღებად

    თქვენს Excel-ში მორგებული Regex Extract ფუნქციის დასამატებლად, ჩასვით შემდეგი კოდი VBA რედაქტორში. იმისათვის, რომ ჩართოთ რეგულარული გამონათქვამები VBA-ში, ჩვენ ვიყენებთ ჩაშენებულ Microsoft RegExp ობიექტს.

    საჯარო ფუნქცია RegExpExtract(ტექსტი როგორც სტრიქონი, ნიმუში როგორც სტრიქონი, არჩევითი instance_num როგორც მთელი რიცხვი = 0, არჩევითი match_case როგორც ლოგიკური = True ) Dim text_matches() როგორც სტრიქონი Dim matches_index როგორც მთელი რიცხვი შეცდომის შესახებ GoTo ErrHandl RegExpExtract = "" დააყენეთ regex = CreateObject ( "VBScript.RegExp") regex.pattern = ნიმუში regex.Global = True regex.MultiLine შესაბამისი regex = True. ignorecase = False Else regex.ignorecase = True End If Set შეესაბამება = regex.Execute(ტექსტი) თუ 0 < ემთხვევა. დათვლა, შემდეგ თუ (0 = მაგალითი_რაოდენობა) მაშინ ReDim text_matches(Match.Count - 1, 0) მატჩების_ინდექსისთვის = 0 ToVBA RegExp, გირჩევთ წაიკითხოთ შემდეგი ნაწილი, რომელიც განიხილავს ბევრად უფრო მძლავრ .NET Regex ფუნქციებს.

    Custom .NET-ზე დაფუძნებული Regex ფუნქცია Excel-ში ტექსტის ამოსაღებად

    განსხვავებით VBA RegExp ფუნქციებისგან, რომლებიც შეიძლება დაიწეროს ნებისმიერი Excel მომხმარებლის მიერ, .NET RegEx არის დეველოპერის სფერო. Microsoft .NET Framework მხარს უჭერს Perl 5-თან თავსებად რეგულარულ გამოხატვის სინტაქსს. ეს სტატია არ გასწავლით თუ როგორ უნდა დაწეროთ ასეთი ფუნქციები (მე არ ვარ პროგრამისტი და არ მაქვს ოდნავი წარმოდგენა იმაზე, თუ როგორ გავაკეთო ეს :)

    სტანდარტული .NET RegEx ძრავით დამუშავებული ოთხი ძლიერი ფუნქცია უკვე დაწერილია ჩვენი დეველოპერების მიერ და შედის Ultimate Suite-ში. ქვემოთ წარმოგიდგენთ ფუნქციის პრაქტიკულ გამოყენებას, რომელიც სპეციალურად შექმნილია Excel-ში ტექსტის ამოსაღებად.

    რჩევა. .NET Regex სინტაქსის შესახებ ინფორმაციისთვის იხილეთ .NET Regular Expression Language.

    როგორ ამოიღოთ ნაკბენები Excel-ში რეგულარული გამონათქვამების გამოყენებით

    თუ ვივარაუდებთ, რომ დაინსტალირებული გაქვთ Ultimate Suite-ის უახლესი ვერსია, რეგულარული გამონათქვამების გამოყენებით ტექსტის ამოღება მთავრდება ამ ორ ნაბიჯზე:

    1. Ablebits Data ჩანართზე, Text ჯგუფში დააწკაპუნეთ Regex Tools .
    2. Regex Tools პანელზე აირჩიეთ წყაროს მონაცემები, შეიყვანეთ თქვენი Regex ნიმუში და აირჩიეთ Extract ვარიანტი. შედეგის, როგორც მორგებული ფუნქციის და არა მნიშვნელობის მისაღებად, აირჩიეთ ჩასმა როგორც ფორმულა შემოწმებაყუთი. დასრულების შემდეგ დააწკაპუნეთ ღილაკზე Extract .

    შედეგები გამოჩნდება ახალ სვეტში თქვენი ორიგინალური მონაცემების მარჯვნივ:

    AblebitsRegexExtract სინტაქსი

    ჩვენს მორგებულ ფუნქციას აქვს შემდეგი სინტაქსი:

    AblebitsRegexExtract(მინიშნება, რეგულარული_გამოხატვა)

    სად:

    • მინიშნება (საჭიროა) - მითითება უჯრედზე, რომელიც შეიცავს წყაროს სტრიქონს.
    • Regular_expression (აუცილებელია) - რეგექსის ნიმუში შესატყვისი.

    მნიშვნელოვანი შენიშვნა! ფუნქცია მუშაობს მხოლოდ მანქანებზე, რომლებშიც დაინსტალირებულია Ultimate Suite for Excel.

    გამოყენების შენიშვნები

    იმისთვის, რომ თქვენი სწავლის მრუდი უფრო გამარტივდეს და გამოცდილება უფრო სასიამოვნო იყოს, გთხოვთ, ყურადღება მიაქციოთ შემდეგ პუნქტებს:

    1. ფორმულის შესაქმნელად შეგიძლიათ გამოიყენოთ ჩვენი Regex Tools , ან Excel-ის Insert function დიალოგი, ან ჩაწეროთ ფუნქციის სრული სახელი უჯრედში. ფორმულის ჩასმის შემდეგ, თქვენ შეგიძლიათ მართოთ ის (რედაქტირება, კოპირება ან გადატანა), როგორც ნებისმიერი ძირითადი ფორმულა.
    2. თქვენ მიერ შეყვანილი შაბლონი Regex Tools პანელში გადადის მე-2 არგუმენტში. ასევე შესაძლებელია რეგულარული გამოხატვის შენარჩუნება ცალკე უჯრედში. ამ შემთხვევაში, უბრალოდ გამოიყენეთ უჯრედის მითითება მე-2 არგუმენტისთვის.
    3. ფუნქცია ამოიღებს პირველი ნაპოვნი შესატყვისს .
    4. ნაგულისხმევად, ფუნქცია არის შემთხვევა. -მგრძნობიარე . რეგისტრის არმგრძნობიარე შესატყვისისთვის გამოიყენეთ (?i) ნიმუში.
    5. თუ შესატყვისი ვერ მოიძებნა, არის #N/A შეცდომა.დაბრუნდა.

    Regex ორ სიმბოლოს შორის სტრიქონის ამოსაღებად

    ორ სიმბოლოს შორის ტექსტის მისაღებად, შეგიძლიათ გამოიყენოთ გადამღები ჯგუფი ან მიმოიხედე.

    მოდით, თქვით, რომ ეძებთ ტექსტის ამოღებას ფრჩხილებს შორის. ჯგუფის დაჭერა უმარტივესი გზაა.

    ნიმუში 1 : \[(.*?)\]

    პოზიტიური ხედვით და წინსვლის შემთხვევაში შედეგი ზუსტად იქნება იგივე.

    ნიმუში 2 : (?<=\[)(.*?)(?=\])

    გთხოვთ, მიაქციოთ ყურადღება, რომ ჩვენი გადამღები ჯგუფი (.*?) ასრულებს ზარმაცი ძიებას ტექსტის ორ ფრჩხილს შორის - პირველიდან [ პირველამდე ]-მდე. გადამღები ჯგუფი კითხვის ნიშნის გარეშე (.*) გააკეთებს ხარბ ძიებას და აიღებს ყველაფერს პირველიდან ბოლომდე.

    A2-ის ნიმუშით, ფორმულა ასე გამოიყურება. შემდეგნაირად:

    =AblebitsRegexExtract(A5, $A$2)

    როგორ მივიღოთ ყველა შესატყვისი

    როგორც უკვე აღვნიშნეთ, AblebitsRegexExtract ფუნქციას შეუძლია მხოლოდ ერთი მატჩის ამოღება. ყველა მატჩის მისაღებად, შეგიძლიათ გამოიყენოთ VBA ფუნქცია, რომელიც ადრე განვიხილეთ. თუმცა, არის ერთი სიფრთხილე - VBA RegExp არ უჭერს მხარს ჯგუფების გადაღებას, ამიტომ ზემოთ მოყვანილი ნიმუში დააბრუნებს "საზღვრის" სიმბოლოებსაც, ფრჩხილებს ჩვენს შემთხვევაში.

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    მოშორება ფრჩხილებიდან, ჩაანაცვლეთ ისინი ცარიელი სტრიქონებით ("") ამ ფორმულის გამოყენებით:

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")

    უკეთესი წაკითხვისთვის, ჩვენ ვიყენებთ მძიმით დელიმიტერისთვის.

    Regex ტექსტის ამოსაღებად ორ სტრიქონს შორის

    მიდგომა, რომელიც ჩვენ ვიმუშავეთინტერპრეტაცია სიტყვასიტყვით).

  • (?:[A-Za-z\d\-\.]{2,255}\.)? - არა-დამჭერი ჯგუფი მესამე დონის, მეოთხე დონის და ა.შ. დომენების იდენტიფიცირებისთვის, ასეთის არსებობის შემთხვევაში ( მობილური ჩვენს ნიმუშ URL-ში). პირველ შაბლონში, ის მოთავსებულია უფრო დიდ გადამღებ ჯგუფში, რათა ყველა ასეთი ქვედომენი ჩაერთოს ექსტრაქციაში. ქვედომენი შეიძლება იყოს 2-დან 255 სიმბოლომდე, აქედან გამომდინარეობს {2255} კვანტიფიკატორი.
  • ([A-Za-z\d\-]{1,63}\.[A-Za-z] {2,24}) - ჯგუფის გადაღება მეორე დონის დომენის ( ablebits ) და ზედა დონის დომენის ( com ) ამოსაღებად. მეორე დონის დომენის მაქსიმალური სიგრძეა 63 სიმბოლო. ყველაზე გრძელი ზედა დონის დომენი, რომელიც ამჟამად არსებობს, შეიცავს 24 სიმბოლოს.
  • დამოკიდებულია იმაზე, თუ რომელი რეგულარული გამოხატულება იქნება შეყვანილი A2-ში, ქვემოთ მოცემული ფორმულა გამოიმუშავებს განსხვავებულ შედეგებს:

    =AblebitsRegexExtract(A5, $A$2)

    Regex სრული დომენის სახელის ამოსაღებად ყველა ქვედომენით:

    Regex მეორე დონის დომენის ამოსაღებად ქვედომენების გარეშე:

    აი, როგორ ამოიღოთ ტექსტის ნაწილები Excel-ში რეგულარული გამონათქვამების გამოყენებით. მადლობას გიხდით წაკითხვისთვის და მოუთმენლად ველი თქვენს ნახვას ჩვენს ბლოგზე მომავალ კვირას!

    ხელმისაწვდომი ჩამოტვირთვები

    Excel Regex Extract-ის მაგალითები (ფაილი .xlsm)

    Ultimate Suite საცდელი ვერსია (.exe ფაილი)

    \b(0?[0-9]matches.Count - 1 text_matches(match_index, 0) = matches.Item(match_index) Next matches_index Function RegExpExtract = text_matches სხვა RegExpExtract = matches.Item(მაგალითის_რაოდენობა - 1) დასრულება თუ დასრულება თუ გასვლა ფუნქცია ErrHandl(ReguexElnp)

    თუ VBA-სთან მუშაობის მცირე გამოცდილება გაქვთ, მომხმარებლის ნაბიჯ-ნაბიჯ სახელმძღვანელო შეიძლება სასარგებლო აღმოჩნდეს: როგორ ჩავსვათ VBA კოდი Excel-ში.

    შენიშვნა. იმისათვის, რომ ფუნქცია იმუშაოს, დარწმუნდით, რომ შეინახეთ თქვენი ფაილი მაკრო ჩართული სამუშაო წიგნის სახით (.xlsm).

    RegExpExtract სინტაქსი

    RegExpExtract ფუნქცია ეძებს შეყვანის სტრიქონში მნიშვნელობებს, რომლებიც ემთხვევა ჩვეულებრივ გამოხატულებას და ამოიღებს ერთ ან ყველა შესატყვისს.

    ფუნქციას აქვს შემდეგი სინტაქსი. :

    RegExpExtract(ტექსტი, ნიმუში, [მაგალითის_რაოდენობა], [შემთხვევა_შემთხვევა])

    სად:

    • ტექსტი (აუცილებელია) - ტექსტის სტრიქონი მოსაძებნად.
    • ნიმუში (აუცილებელია) - რეგულარული გამოხატულება შესატყვისი. უშუალოდ ფორმულაში მოწოდებისას, ნიმუში უნდა იყოს ჩასმული ორმაგ ბრჭყალებში.
    • მაგალითის_რიცხვი (არასავალდებულო) - სერიული ნომერი, რომელიც მიუთითებს რომელი მაგალითის ამოღება. თუ გამოტოვებულია, აბრუნებს ყველა ნაპოვნი შესატყვისს (ნაგულისხმევი).
    • შემთხვევის_შემთხვევა (არასავალდებულო) - განსაზღვრავს, შეესაბამება თუ არა ტექსტის რეგისტრის იგნორირებას. თუ TRUE ან გამოტოვებულია (ნაგულისხმევი), შესრულებულია რეგისტრის მგრძნობიარე შესატყვისი; თუ FALSE - რეგისტრირებულია.

    ფუნქცია მუშაობს Excel 365, Excel 2021, Excel-ის ყველა ვერსიაში2019, Excel 2016, Excel 2013 და Excel 2010.

    4 რამ, რაც უნდა იცოდეთ RegExpExtract-ის შესახებ

    იმისთვის, რომ ეფექტურად გამოიყენოთ ფუნქცია თქვენს Excel-ში, არის რამდენიმე მნიშვნელოვანი რამ, რაც უნდა გაითვალისწინოთ:

    1. ნაგულისხმევად, ფუნქცია აბრუნებს ყველა ნაპოვნი შესატყვისს მეზობელ უჯრედებში, როგორც ეს ნაჩვენებია ამ მაგალითში. კონკრეტული შემთხვევის მისაღებად, მიაწოდეთ შესაბამისი რიცხვი მაგალითის_რიცხვი არგუმენტს.
    2. ნაგულისხმევად, ფუნქცია არის case-sensitive . რეგისტრის არმგრძნობიარე შესატყვისისთვის დააყენეთ არგუმენტი შემთხვევის_შემთხვევისთვის FALSE-ზე. VBA შეზღუდვების გამო, რეგისტრირებული კონსტრუქცია (?i) არ იმუშავებს.
    3. თუ მართებული ნიმუში ვერ მოიძებნა , ფუნქცია არაფერს აბრუნებს (ცარიელი სტრიქონი).
    4. თუ ნიმუში არასწორია , არის #VALUE! ჩნდება შეცდომა.

    სანამ დაიწყებთ ამ მორგებული ფუნქციის გამოყენებას თქვენს სამუშაო ფურცლებში, უნდა გესმოდეთ, რა შეუძლია მას, არა? ქვემოთ მოყვანილი მაგალითები მოიცავს რამდენიმე საერთო გამოყენების შემთხვევას და განმარტავს, თუ რატომ შეიძლება განსხვავდებოდეს ქცევა დინამიური მასივის Excel-ში (Microsoft 365 და Excel 2021) და ტრადიციულ Excel-ში (2019 და უფრო ძველი ვერსიები).

    შენიშვნა. რეგექსის მაგალითები დაწერილია საკმაოდ მარტივი მონაცემთა ნაკრებისთვის. ჩვენ ვერ მოგცემთ გარანტიას, რომ ისინი უნაკლოდ იმუშავებენ თქვენს რეალურ სამუშაო ფურცლებზე. მათ, ვისაც აქვს რეგექსის გამოცდილება, დამეთანხმება, რომ რეგულარული გამონათქვამების წერა სრულყოფილების უსასრულო გზაა - თითქმის ყოველთვის არსებობს გზა.ის უფრო ელეგანტურია ან შეუძლია შეყვანილი მონაცემების უფრო ფართო დიაპაზონის დამუშავება.

    რეგექსი სტრიქონიდან რიცხვის ამოსაღებად

    „მარტივიდან რთულამდე“ სწავლების ძირითადი მაქსიმის მიხედვით, ჩვენ დავიწყებთ ძალიან მარტივი შემთხვევით: რიცხვის ამოღება სტრიქონიდან.

    პირველი, რაც თქვენ უნდა გადაწყვიტოთ, არის რომელი რიცხვი მოიძიოთ: პირველი, ბოლო, კონკრეტული შემთხვევა თუ ყველა რიცხვი.

    პირველი რიცხვის ამოღება

    ეს ისეთივე მარტივია, როგორც რეგექსის მიღება შეუძლია. იმის გათვალისწინებით, რომ \d ნიშნავს ნებისმიერ ციფრს 0-დან 9-მდე და + ნიშნავს ერთ ან მეტჯერ, ჩვენი რეგულარული გამოსახულება იღებს ამ ფორმას:

    ნიმუში : \d+

    Set მაგალითის_რიცხვი 1-მდე და თქვენ მიიღებთ სასურველ შედეგს:

    =RegExpExtract(A5, "\d+", 1)

    სადაც A5 არის ორიგინალური სტრიქონი.

    მოხერხებულობისთვის შეგიძლიათ შეიყვანოთ ნიმუში წინასწარ განსაზღვრულ უჯრედში ($A$2) და ჩაკეტეთ მისი მისამართი $ ნიშნით:

    =RegExpExtract(A5, $A$2, 1)

    მიიღეთ ბოლო რიცხვი

    სტრიქონიდან ბოლო რიცხვის ამოსაღებად , აქ არის გამოსაყენებელი ნიმუში:

    ნიმუში : (\d+)(?!.*\d)

    თარგმნილია ადამიანის ენაზე , ის ამბობს: იპოვნეთ რიცხვი, რომელსაც არ მოჰყვება (არსად და არა დაუყოვნებლივ) სხვა რიცხვი. ამის გამოსახატავად ვიყენებთ ნეგატიურ მზერას (?!.*\d), რაც ნიშნავს, რომ ნიმუშის მარჯვნივ არ უნდა იყოს სხვა ციფრი (\d), მიუხედავად იმისა, რამდენი სხვა სიმბოლოა მის წინ.

    =RegExpExtract(A5, "(\d+)(?!.*\d)")

    რჩევები:

    • სპეციფიკური შემთხვევის მისაღებად გამოიყენეთ \d+ ნიმუშისთვის და შესაბამისი სერიისთვისრიცხვი მაგალითის_რიცხვისთვის .
    • ფორმულა ამოსაღებია ყველა რიცხვი განხილულია შემდეგ მაგალითში.

    Regex ყველა შესატყვისის ამოსაღებად

    ჩვენი მაგალითის ოდნავ წინ გადაწევა, დავუშვათ, რომ გსურთ მიიღოთ ყველა რიცხვი სტრიქონიდან და არა მხოლოდ ერთიდან.

    როგორც გახსოვთ, ამოღებული შესატყვისების რაოდენობა კონტროლდება არასავალდებულო <1-ით. არგუმენტი>instance_num . ნაგულისხმევი არის ყველა შესატყვისი, ასე რომ თქვენ უბრალოდ გამოტოვებთ ამ პარამეტრს:

    =RegExpExtract(A2, "\d+")

    ფორმულა მშვენივრად მუშაობს ერთი უჯრედისთვის, მაგრამ ქცევა განსხვავდება Dynamic Array Excel-ში და არადინამიურ ვერსიებში.

    Excel 365 და Excel 2021

    დინამიური მასივების მხარდაჭერის გამო, ჩვეულებრივი ფორმულა ავტომატურად იღვრება იმდენ უჯრედში, რამდენიც საჭიროა ყველა გამოთვლილი შედეგის საჩვენებლად. Excel-ის თვალსაზრისით, ამას ეწოდება დაღვრილი დიაპაზონი:

    Excel 2019 და ქვედა

    წინა დინამიურ Excel-ში, ზემოაღნიშნული ფორმულა დააბრუნებს მხოლოდ ერთ შესაბამისობას. მრავალი შესატყვისის მისაღებად, თქვენ უნდა გააკეთოთ ის მასივის ფორმულა. ამისათვის შეარჩიეთ უჯრედების დიაპაზონი, აკრიფეთ ფორმულა და დააჭირეთ Ctrl + Shift + Enter მის დასასრულებლად.

    ამ მიდგომის უარყოფითი მხარეა #N/A შეცდომები, რომლებიც გამოჩნდება "ზედმეტ უჯრედებში" . სამწუხაროდ, ამის შესახებ არაფერი შეიძლება გაკეთდეს (ვერც IFERROR და ვერც IFNA ვერ გაასწორებენ ამას, სამწუხაროდ).

    ყველა შესატყვისის ამოღება ერთ უჯრედში

    მონაცემების სვეტის დამუშავებისას, ზემოაღნიშნული მიდგომა აშკარად არ იმუშავებს. ამ შემთხვევაში იდეალური გადაწყვეტაადააბრუნებდა ყველა მატჩს ერთ უჯრედში. ამის შესასრულებლად, გადაიტანეთ RegExpExtract-ის შედეგები TEXTJOIN ფუნქციაში და გამოყავით ისინი თქვენთვის სასურველი ნებისმიერი გამსაზღვრელით, თქვით მძიმით და ინტერვალით:

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    შენიშვნა. იმის გამო, რომ TEXTJOIN ფუნქცია ხელმისაწვდომია მხოლოდ Excel-ში Microsoft 365, Excel 2021 და Excel 2019, ფორმულა არ იმუშავებს ძველ ვერსიებში.

    Regex ტექსტის ამოსაღებად სტრიქონიდან

    ტექსტის ამოღება ალფანუმერული სტრიქონი საკმაოდ რთული ამოცანაა Excel-ში. რეგექსით ის ისეთივე მარტივი ხდება, როგორც ღვეზელი. უბრალოდ გამოიყენეთ უარყოფილი კლასი, რათა დაემთხვათ ყველაფერი, რაც არ არის ციფრი.

    ნიმუში : [^\d]+

    ცალკეულ უჯრედებში ქვესტრიქონების მისაღებად (დაღვრის დიაპაზონი) , ფორმულა არის:

    =RegExpExtract(A5, "[^\d]+")

    ყველა შესატყვისი ერთ უჯრედში გამოსატანად, ჩასვით RegExpExtract ფუნქცია TEXTJOIN-ში ასე:

    =TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))

    Regex to ელ.ფოსტის მისამართის ამოღება სტრიქონიდან

    იმისათვის, რომ ამოიღოთ ელ.ფოსტის მისამართი სტრიქონიდან, რომელიც შეიცავს უამრავ სხვადასხვა ინფორმაციას, დაწერეთ რეგულარული გამოხატულება, რომელიც იმეორებს ელ.ფოსტის მისამართის სტრუქტურას.

    ნიმუში : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    ამ რეგექსის დაშლა , აი რას მივიღებთ:

    • [\w\.\-]+ არის მომხმარებლის სახელი, რომელიც შეიძლება შეიცავდეს 1 ან მეტ ალფაციფრულ სიმბოლოს, ქვედა ხაზებს, წერტილებს და დეფისებს.
    • @ სიმბოლო.
    • [A-Za-z0-9\.\-]+ არის დომენის სახელი, რომელიც შედგება: დიდი და პატარა ასოები, ციფრები, დეფისები და წერტილები (შემთხვევაშიქვედომენებიდან). აქ ხაზგასმა დაუშვებელია, ამიტომ 3 განსხვავებული სიმბოლოების ნაკრები (როგორიცაა A-Z a-z და 0-9) გამოიყენება \w-ის ნაცვლად, რომელიც ემთხვევა ნებისმიერ ასოს, ციფრს ან ხაზს.
    • \.[A-Za-z. ]{2,24} არის უმაღლესი დონის დომენი. შედგება წერტილისაგან, რასაც მოჰყვება დიდი და პატარა ასოები. ზედა დონის დომენების უმეტესობა 3-ასოიანია (მაგ. com .org, .edu და ა.შ.), მაგრამ თეორიულად შეიძლება შეიცავდეს 2-დან 24 ასოს (ყველაზე გრძელი რეგისტრირებული TLD).
    <. 0>თუ ვივარაუდებთ, რომ სტრიქონი არის A5-ში და ნიმუში A2-ში, ელფოსტის მისამართის ამოღების ფორმულა არის:

    =RegExpExtract(A5, $A$2)

    Regex დომენის ამოსაღებად ელფოსტიდან

    როდესაც ის ეხება ელ.ფოსტის დომენის ამოღებას, პირველი აზრი, რაც თავში მოდის, არის გადამღები ჯგუფის გამოყენება ტექსტის საპოვნელად, რომელიც დაუყოვნებლივ მიჰყვება @ სიმბოლოს.

    ნიმუში : @([A-Za-z0 -9\.\-]+\.[A-Za-z]{2,24})

    მიიტანეთ ის ჩვენს RegExp ფუნქციაში:

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    და თქვენ მიიღებთ ამ შედეგს:

    კლასიკური რეგულარული გამონათქვამებით, ნებისმიერი გადაღების ჯგუფის გარეთ არ შედის ამონაწერში. არავინ იცის, რატომ მუშაობს VBA RegEx განსხვავებულად და იჭერს "@"-საც. მის მოსაშორებლად, თქვენ შეგიძლიათ ამოიღოთ პირველი სიმბოლო შედეგიდან, შეცვალოთ იგი ცარიელი სტრიქონით.

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    ჩვეულებრივი გამოხატულება ტელეფონის ნომრების ამოსაღებად

    ტელეფონის ნომრები შეიძლება დაიწეროს სხვადასხვა გზით, რის გამოც თითქმის შეუძლებელია გამოსავლის მოძიება, რომელიც მუშაობს ყველაფერში(\d{4}from string

    თარიღის ამოღების რეგულარული გამოხატულება დამოკიდებულია ფორმატზე, რომელშიც თარიღი გამოჩნდება სტრიქონში. მაგალითად:

    თარიღების ამოსაღებად, როგორიცაა 1/1/21 ან 01/01/2021, რეგექსი არის: \d{1,2}\/\d{1,2}\/(\d {4}გარემოებები. მიუხედავად ამისა, შეგიძლიათ ჩაწეროთ თქვენს მონაცემთა ბაზაში გამოყენებული ყველა ფორმატი და სცადოთ მათი შედარება.

    ამ მაგალითისთვის, ჩვენ ვაპირებთ შევქმნათ რეგექსი, რომელიც ამოიღებს ტელეფონის ნომრებს რომელიმე ამ ფორმატში:

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123- 345-6789

    123.345.6789

    123 345 6789

    1233456789

    ნიმუში : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b

    • პირველი ნაწილი \(?\d{3} შეესაბამება ნულს ან ერთ გახსნის ფრჩხილებს, რასაც მოჰყვება სამი ციფრი d{3}.
    • [-\. \)]* ნაწილი ნიშნავს კვადრატულ ფრჩხილებში ნებისმიერ სიმბოლოს, რომელიც გამოჩნდება 0 ან მეტჯერ: დეფისი, წერტილი, ინტერვალი ან დახურვის ფრჩხილები.
    • შემდეგ, კვლავ გვაქვს სამი ციფრი d{3}, რასაც მოჰყვება ნებისმიერი დეფისი, წერტილი ან ინტერვალი [-\. ]? გამოჩნდება 0 ან 1 ჯერ.
    • ამის შემდეგ არის ოთხი ციფრის ჯგუფი \d{4}.
    • ბოლოს, არის სიტყვის საზღვარი \b, რომელიც განსაზღვრავს, რომ ტელეფონის ნომერი ჩვენ ვართ ძიება არ შეიძლება იყოს უფრო დიდი რიცხვის ნაწილი.

    სრული ფორმულა იღებს ამ ფორმას:

    =RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")

    გთხოვთ გაითვალისწინოთ, რომ ზემოაღნიშნული რეგექსი შეიძლება დაბრუნდეს რამდენიმე ცრუ დადებითი შედეგები, როგორიცაა 123) 456 7899 ან (123 456 7899. ქვემოთ მოცემული ვერსია აგვარებს ამ პრობლემებს. თუმცა, ეს სინტაქსი მუშაობს მხოლოდ VBA RegExp ფუნქციებში და არა კლასიკურ რეგულარულ გამონათქვამებში.

    ნიმუში. : (\(\d{3}\)out for ამოღება ტექსტის ორ სიმბოლოს შორის ასევე იმუშავებს ტექსტის ამოსაღებად ორ სტრიქონს შორის.

    მაგალითად, იმისათვის, რომ მიიღოთ ყველაფერი "ტესტი 1" და "ტესტი 2" შორის, გამოიყენეთ შემდეგი რეგულარული გამოხატულება.

    ნიმუში : ტესტი 1(.*?)ტესტი 2

    სრული ფორმულა არის:

    =AblebitsRegexExtract(A5, "test 1(.*?)test 2")

    Regex დომენის URL-დან ამოსაღებად

    რეგულარული გამონათქვამების შემთხვევაშიც კი, URL-ებიდან დომენის სახელების ამოღება არ არის ტრივიალური ამოცანა. მთავარი ელემენტი, რომელიც ხრიკს აკეთებს, არის ჯგუფები, რომლებიც არ იპყრობენ. თქვენი საბოლოო მიზნიდან გამომდინარე, აირჩიეთ ქვემოთ მოყვანილი რეგექსებიდან ერთ-ერთი.

    სრული დომენის სახელის მისაღებად ქვედომენების ჩათვლით

    ნიმუში : (?: https?\:

    მაიკლ ბრაუნი არის ტექნოლოგიის ერთგული ენთუზიასტი, რომელსაც აქვს გატაცება პროგრამული ინსტრუმენტების გამოყენებით რთული პროცესების გამარტივებისთვის. ტექნოლოგიურ ინდუსტრიაში ათწლეულზე მეტი გამოცდილებით, მან დახვეწა თავისი უნარები Microsoft Excel-სა და Outlook-ში, ასევე Google Sheets-სა და Docs-ში. მაიკლის ბლოგი ეძღვნება თავისი ცოდნისა და გამოცდილების სხვებს გაზიარებას, ადვილად მისაწვდომ რჩევებსა და გაკვეთილებს პროდუქტიულობისა და ეფექტურობის გასაუმჯობესებლად. მიუხედავად იმისა, გამოცდილი პროფესიონალი ხართ თუ დამწყები, მაიკლის ბლოგი გთავაზობთ ღირებულ შეხედულებებსა და პრაქტიკულ რჩევებს ამ აუცილებელი პროგრამული ხელსაწყოებიდან მაქსიმალური სარგებლობის მისაღებად.