REGEX.EXTRACT

Funkce REGEX.EXTRACT vrací shody nebo zachycené skupiny ve shodě se zadaným regulárním výrazem ve zdrojovém řetězci.

REGEX.EXTRACT(zdrojový-řetězec; řetězec-regulárního-výrazu; výskyt-shod; výskyt-zachytávaných-skupin)

zdrojový-řetězec: Řetězcová hodnota pro porovnání a zjištění, zda nastane shoda.

řetězec-regulárního-výrazu: Řetězcová hodnota reprezentující regulární výraz, který se porovnává se zdrojovým-řetězcem.

výskyt-shod: Nepovinná celočíselná hodnota udávající shodu, která má být vrácena, když těchto shod existuje více. Lze použít i záporná čísla. Ta udávají shody v obráceném pořadí, takže například -1 je poslední shoda atd. Při zadání čísla 0 bude vráceno pole se všemi shodami. Je-li parametr vynechán, funkce vrátí první shodu.

výskyt-zachytávaných-skupin: Nepovinná celočíselná hodnota určující, kolikátá zachycená skupina má být vrácena, jestliže regulární výraz obsahuje zachytávané skupiny. Záporné hodnoty nelze použít. Při zadání čísla 0 bude vráceno pole se všemi zachycenými skupinami. Je-li parametr vynechán, funkce vrátí celou shodu.

Poznámky

  • Řetězec-regulárního-výrazu musí splňovat podmínky standardu ICU.

Příklady

Pokud máte data, která se snadno nevejdou do řádků a sloupců tabulky, můžete pro zjednodušení použít funkci REGEX.EXTRACT. Například v níže uvedené tabulce mají data určitou strukturu, ale může být obtížné je ručně rozdělit do více buněk pro každé zobrazení.

A

1

Hodnocení uživatelů

2

E-mail: jtalma@icloud.com Jméno: Julie Talma Datum: 17.05.2021

3

E-mail: danny_rico@icloud.com Jméno: Danny Rico Datum: 02.06.2021

Toto lze vyřešit tak, že do tabulky přidáte další sloupce pro Jméno, E-mail, Hodnocení a Datum a pak pomocí funkce REGEX.EXTRACT vyhledáte požadovaná data a vrátíte je v buňce.

Pro vrácení jména můžete zadat například následující vzorec:

Editor vzorců zobrazující vzorec =REGEX.EXTRACT(A2;"(?<=Jméno: )(.*)(?= Datum)"

V tomto vzorci byly použity následující argumenty:

  • zdrojový-řetězec: A2, buňka obsahující data, v nichž chcete hledat jméno.

  • řetězec-regulárního-výrazu: "(?<=Jméno: )(.*)(?= Datum)", regulární výraz, který hledá text mezi řetězcem "Jméno: " a " Datum".

Tento vzorec lze opakovat pro každý řádek dat a vrátit jména všech osob, které odpověděly na průzkum, změnou zdrojového-řetězce tak, aby odpovídal ostatním buňkám obsahujícím informace o hodnocení uživatele.

Toto lze vyřešit tak, že do tabulky přidáte další sloupce pro Jméno, E-mail, Hodnocení a Datum a pak pomocí funkce REGEX.EXTRACT vyhledáte požadovaná data a vrátíte je v buňce.

Můžete zadat například následující vzorec:

Editor vzorců zobrazující vzorec =REGEX.EXTRACT(A2;"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")

V tomto vzorci byly použity následující argumenty:

  • zdrojový-řetězec: A2, buňka obsahující data, v nichž chcete hledat určitý e-mail.

  • řetězec-regulárního-výrazu: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2;4}", regulární výraz, který hledá vzor e-mailové adresy.

Změna uspořádání dat pomocí výskytu-shod

Někdy můžete mít data jako v tabulce (s názvem Dodavatelé) níže, která seskupuje hodnoty v buňce:

Dodavatel

Položka

A

Čočka, Cizrna, Fazole

B

Jablka, Pomeranče, Citróny

C

Quinoa, Rýže, Chia semínka

Chcete-li oddělit hodnoty podle obchodu a umístění hodnoty, můžete nejprve vytvořit novou tabulku (jako je tabulka níže):

A

B

C

D

1

Umístění hodnoty

A

B

C

2

1

3

2

4

3

Má-li se vrátit čočka, nejlépe hodnocená položka pro dodavatele A, můžete v buňce B2 v nové tabulce použít vzorec, který vrátí čočku, nejlépe hodnocenou položku pro dodavatele A:

Editor vzorců zobrazující vzorec =REGEX.EXTRACT(Dodavatelé::B2;"\w+";ROW(A2)-1)

V tomto vzorci byly použity následující argumenty:

  • zdrojový-řetězec: Dodavatelé::B2 buňka obsahující data, ve kterých se má hledat. V tomto případě se má prohledat seznam v této buňce.

  • řetězec-regulárního-výrazu: "\w+", regulární výraz, který hledá určité slovo.

  • výskyt-shod: ROW(A2)-1. V tomto případě existují 3 shody pro každý vzorec REGEX.EXTRACT. Pro nastavení konkrétní požadované shody můžete použít jinou funkci, například ROW. ROW(A2) vrací číslo řádku vybrané buňky (2) a hodnota -1 je zahrnuta pro odečtení řádku záhlaví od výsledku; jinak by se v tomto příkladu vrátila cizrna (druhá shoda).

    Vynecháte-li výskyt-shod, výsledkem pro každého dodavatele bude vždy první vrácené slovo (čočka pro dodavatele A, jablka pro dodavatele B atd.).

Výše uvedený vzorec lze snadno upravit a doplnit tabulku pro ostatní dodavatele a další položky.

  • Chcete-li vrátit další oblíbené produkty pro jednoho dodavatele, můžete upravit výskyt-shod. Má-li se například vrátit cizrna, další nejoblíbenější položka pro dodavatele A, můžete změnit odkaz na buňku ve výskytu-shod z A2 na A3.

  • Mají-li se vrátit hodnoty pro jiného dodavatele, můžete upravit zdrojový-řetězec. Mají-li se například vrátit jablka, nejoblíbenější položka pro dodavatele B, můžete změnit odkaz na buňku ve výskytu-shod z B2 na B3.

Další příklady

Předpokládejme, že buňka A1 obsahuje řetězec „marina@example.com john@example.ca mike@example.de“.

Vzorec =REGEX.EXTRACT(A1; "([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})") vrátí řetězec „marina@example.com“.

Vzorec =REGEX.EXTRACT(A1; "([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})", 2) vrátí řetězec „john@example.ca“.

Vzorec =REGEX.EXTRACT(A1; "([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})"; -1) vrátí řetězec „mikeexample.de“.

Vzorec =REGEX.EXTRACT(A1; "([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})"; 1; 1) vrátí „marina“.

Vzorec =REGEX.EXTRACT(A1; "([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})"; 2; 2) vrátí řetězec „example.ca“.

Viz takéREGEX
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
Užitečné?
Limit počtu znaků: 250
Limit maximálního počtu znaků je 250.
Děkujeme za zpětnou vazbu.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.