Apa itu regex di google sheets?

Dalam kutipan dari bab baru dalam ebook Finding Stories in Spreadsheets, saya menjelaskan apa itu ekspresi reguler — dan bagaimana ekspresi reguler dapat digunakan untuk mengekstrak informasi dari spreadsheet. Versi ebook dari tutorial ini menyertakan kumpulan data dan latihan untuk menggunakan teknik ini

Kisah itu tidak biasa. Unit Data BBC telah diberi akses ke kumpulan data di lebih dari 200.000 karya seni di galeri di seluruh Inggris Raya. Pola apa yang bisa kita temukan dalam data yang memungkinkan kita bercerita tentang sifat lukisan bangsa?

Beberapa data mudah untuk dikerjakan. kolom 'artis' relatif bersih, dan memungkinkan kami mengidentifikasi artis pria dan wanita yang paling umum. Ternyata yang terakhir - ahli botani Victoria Marianne North - relatif tidak dikenal. Nah, itulah salah satu cerita yang bisa kami ceritakan

Apa itu regex di google sheets?

Tetapi bagian lain dari data itu lebih bermasalah. Kolom tanggal, misalnya, berisi data yang diformat tidak konsisten. dalam sebagian besar kasus tahun tertentu telah dimasukkan, tetapi dalam banyak kasus lain data berisi teks seperti "abad ke-18" atau "1900-1920" atau "1800-an"

Kami juga memperhatikan bahwa raja banyak ditampilkan dalam seni – tetapi dapat dimengerti bahwa tidak ada kolom yang secara khusus didedikasikan untuk mengklasifikasikannya. Jika kami ingin mengidentifikasi monarki yang paling banyak dilukis, kami harus membuat data baru yang entah bagaimana mengekstraksi nama-nama itu dari judul lukisan.

Masalah-masalah ini – mengekstraksi data dari data yang ada, data teks tertentu – adalah tujuan dari ekspresi reguler. Dalam bab ini saya akan menjelaskan apa itu ekspresi reguler, dan bagaimana menggunakannya dalam spreadsheet

Apa itu ekspresi reguler?

Ekspresi reguler adalah cara mendeskripsikan rangkaian karakter – bisa berupa kata atau frasa kunci, nama atau alamat, atau kode seperti nomor telepon – yang mengikuti pola tertentu

Ini sering dilakukan untuk mengekstrak kumpulan karakter tersebut (misalnya menarik alamat email dari beberapa data) atau menggantinya (misalnya menghapus yang tidak Anda inginkan)

Mereka sangat berguna dalam data tidak terstruktur seperti bidang teks bebas di mana semacam deskripsi telah dimasukkan (mis. g. “£300 dihabiskan untuk makanan” atau “Gol dicetak oleh Marie Smith dari jarak 30 yard”), dan juga untuk data tekstual yang teksnya telah diotomatisasi dan Anda ingin membaginya menjadi beberapa bagian.

Ekspresi reguler adalah salah satu area di mana Google Sheets lebih disukai daripada menggunakan Excel. Meskipun secara teknis Anda dapat menggunakan ekspresi reguler di Excel, prosesnya rumit, melibatkan pengaktifan plugin khusus dan penggunaan skrip kode. Google Sheets, di sisi lain, memiliki fungsi bawaan

Skenario saat Anda mungkin menggunakan ekspresi reguler

Penggunaan umum ekspresi reguler termasuk

  • Mengekstrak nomor telepon
  • Mengekstrak kode pos atau kode ZIP atau kode serupa
  • Mengekstrak nomor pendaftaran perusahaan atau kode faktur
  • Mengekstrak nama orang atau tempat
  • Mengekstrak bagian tertentu dari alamat, seperti negara atau nama jalan
  • Mengidentifikasi tautan, atau alamat email, atau tagar, @nama, dll
  • Mengidentifikasi jumlah uang
  • Mengekstrak alamat

Sebelum kita masuk ke teknis ekspresi reguler berikut adalah beberapa contoh untuk menunjukkan bagaimana Anda dapat menggunakannya

Pertama, bayangkan Anda memiliki kumpulan data tentang hoki dan Anda ingin bercerita tentang siapa yang menciptakan peluang menembak paling banyak untuk rekan satu timnya. Data berisi garis untuk setiap tembakan tetapi tidak ada kolom untuk orang yang melakukan operan yang mengarah ke tembakan. Sebaliknya itu memiliki kolom dengan deskripsi tentang apa yang terjadi

Anda melihat kolom itu dan melihat bahwa deskripsi tersebut ditulis dengan cara yang relatif konsisten. Biasanya itu termasuk bagian yang mengatakan "Menerima izin dari Poppy Singh" atau "Mengikuti izin dari Eve Hill"

Ekspresi reguler akan memungkinkan Anda mengatakan 'Dapatkan saya satu atau lebih kata yang mengikuti "lulus dari" dan mulai dengan huruf kapital diikuti dengan satu atau lebih huruf kecil'

Dalam contoh ini, Anda mendeskripsikan kombinasi kata-kata tertentu ('beralih dari'), pola karakter (nama dimulai dengan huruf besar), dan posisi (setelah 'beralih dari')

Ini contoh kedua. Anda memiliki kolom di beberapa data pengeluaran yang berisi alamat lengkap perusahaan penerima uang. Namun, Anda tidak menginginkan alamat lengkap – Anda menginginkan kode yang ada di akhir alamat (biasanya disebut kode pos atau kode ZIP – atau CAP di Italia, CEP di Brasil, PLZ di Jerman dan Austria, dan PIN di

Ekspresi reguler Anda kali ini mungkin mengatakan 'Temukan saya teks apa pun yang memiliki sejumlah huruf kapital diikuti dengan angka, lalu spasi, lalu huruf kapital dan dua digit' (kode pos negara yang berbeda mengikuti pola yang berbeda sehingga Anda akan menggunakan

Contoh terakhir. katakanlah dalam data yang sama ada kolom yang mengatakan berapa banyak uang yang dihabiskan, dan untuk apa - "£ 3000 dihabiskan untuk pakaian para aktor"

Dalam hal ini Anda mungkin menggunakan satu ekspresi reguler untuk menemukan jumlah uang. itu mungkin mengatakan sesuatu seperti 'simbol mata uang diikuti oleh satu atau lebih digit'. Anda mungkin menemukan bahwa ada koma atau desimal dalam angka yang perlu Anda perhitungkan juga dalam deskripsi Anda ('simbol mata uang diikuti oleh satu atau lebih digit dan/atau koma atau titik'). Anda mungkin menggunakan variasi ekspresi reguler yang sama untuk mengambil barang yang sedang dibeli. 'teks apa pun yang muncul setelah simbol mata uang diikuti oleh satu atau lebih digit', misalnya

Perlu diperhatikan bahwa terkadang hasil yang sama dapat dicapai tanpa menggunakan ekspresi reguler. Misalnya, alamat sering dipisahkan dengan koma sehingga menggunakan opsi 'Teks ke Kolom' di Excel (dipisahkan dengan koma) dapat membagi alamat sesuai kebutuhan Anda tanpa harus menggunakan ekspresi reguler

Demikian juga jika yang Anda inginkan selalu di awal atau akhir sel maka Anda dapat menggunakan fungsi seperti LEFT atau RIGHT untuk mengambilnya (rumus yang lebih kuat dapat menggabungkan ini dengan SEARCH atau FIND untuk mengidentifikasi berapa banyak karakter yang akan diambil) – atau

Fungsi REGEX Google Spreadsheet

Untuk benar-benar membentuk ekspresi reguler, Anda perlu menggunakan karakter tertentu dengan cara tertentu. Ini sering disebut regex (cara singkat untuk mengatakan 'ekspresi reguler')

Google memiliki tiga fungsi yang menggunakan regex

  • REGEXEXTRACT akan mengekstrak teks dari sel jika cocok dengan pola yang Anda gambarkan
  • REGEXMATCH akan memberi tahu Anda jika sebuah sel berisi pola yang Anda gambarkan (TRUE/FALSE)
  • REGEXREPLACE akan mengganti teks yang cocok dengan pola yang Anda gambarkan

Semua mengambil dua bahan utama

  1. Sel tempat Anda ingin mengekstrak teks, memeriksa teks, atau mengganti, dan
  2. Ekspresi reguler yang menjelaskan apa yang ingin Anda ekstrak, periksa, dan ganti

Fungsi REGEXMATCH memiliki bahan ketiga. dengan apa Anda ingin mengganti teks yang cocok

Inilah satu formula untuk ditunjukkan

RIGHT_0

Ini terlihat di sel A2 untuk ekspresi "halo". Jika ditemukan di mana saja, saat dimasukkan akan mengembalikan RIGHT1 (yaitu, sel tempat Anda mengetik rumus ini akan menampilkan RIGHT1). Jika tidak, itu akan mengembalikan RIGHT3

Ini satu lagi, menggunakan fungsi regex yang berbeda

RIGHT_4

Dalam hal ini, rumus akan mengambil konten sel A2, dan mengganti setiap bagian yang cocok dengan ekspresi tersebut (“halo”) dengan beberapa teks berbeda (“selamat tinggal”). Jadi jika A2 berisi "Saya menyapa dia dan dia menyapa saya" sel tempat Anda mengetikkan rumus Anda akan (setelah Anda keluar) berisi "Saya mengucapkan selamat tinggal padanya dan dia mengucapkan selamat tinggal kepada saya"

Sekarang untuk contoh menggunakan fungsi final

RIGHT_5

Jika A2 berisi karakter "halo" di mana saja, maka saat Anda memasukkan rumus ini, sel tempat Anda memasukkannya hanya akan mengatakan "halo" - dengan kata lain, itu akan mengekstraksi teks yang cocok dengan ekspresi. Jika A2 tidak mengandung "hello" maka kita akan mendapatkan error RIGHT6

Ini mungkin kedengarannya tidak terlalu berguna – dan memang, tidak ada dalam contoh ini. Untuk benar-benar memanfaatkan fungsi ini dengan sebaik-baiknya, kita perlu membuat ekspresi yang kurang spesifik – dan di situlah kekuatan sebenarnya dari ekspresi reguler menjadi nyata

Ekspresi reguler sebagai bahasa. regex

Dalam contoh di awal bab, saya menjelaskan beberapa cara di mana kita dapat mendeskripsikan pola karakter ('Temukan saya teks apa pun yang memiliki sejumlah huruf kapital diikuti dengan angka, lalu spasi, lalu huruf kapital dan . Untuk melakukan ini kita membutuhkan bahasa yang dapat menggambarkan pola-pola tersebut

Regex adalah bahasa itu. Itu dapat menggambarkan setiap karakter secara harfiah, seperti pada ekspresi RIGHT7, tetapi dapat juga menggunakan karakter khusus, seperti tanda kurung, tanda bintang, tanda dolar dan lain-lain, untuk menjadi kurang spesifik

Kurung siku, misalnya, dapat digunakan untuk mengartikan 'salah satu dari karakter ini'

Berikut adalah contoh ekspresi yang melakukan hal itu

RIGHT_8

Ini berarti 'huruf besar apa saja'

Untuk mengatakan 'huruf kecil apa pun' Anda akan menggunakan RIGHT9. Dan untuk mengatakan 'digit apa pun' Anda akan menggunakan SEARCH0

Ini bisa dirangkai seperti itu

SEARCH1

Ungkapan itu berarti 'angka diikuti oleh huruf besar diikuti oleh huruf besar lainnya' (salah satu cara untuk menggambarkan bagian dari kode pos)

Tanda kurung kotak juga dapat digunakan untuk menunjukkan rentang karakter yang lebih spesifik, mis. g. SEARCH2 untuk menunjukkan 'huruf vokal kecil'

Serangkaian huruf atau angka dalam tanda kurung siku dapat digabungkan dengan huruf atau angka normal (yang biasanya disebut 'harfiah') untuk mencocokkan variasi ejaan yang berbeda, seperti itu

SEARCH_3

Dalam hal ini ungkapan mengatakan 'huruf besar atau kecil H, diikuti oleh karakter e, l, l, o dalam urutan itu'

Berikut contoh lain dengan angka

SEARCH_4

Ungkapan ini menetapkan bahwa dua angka pertama harus 0 dan 1, diikuti oleh dua angka dengan nilai berapa pun (ini dapat digunakan untuk mencocokkan kode area telepon Inggris Raya)

Kami juga dapat mengadaptasi ekspresi sebelumnya untuk dibaca seperti ini

SEARCH5

Itu berarti 'nol diikuti oleh 1 atau 2, diikuti oleh dua angka lagi' (kode area Inggris, misalnya, dapat dimulai dengan '01' atau '02'. ini sekarang menjelaskan itu)

Tanda kurung siku hanyalah salah satu dari sejumlah karakteristik regex sebagai bahasa tertentu. Misalnya, alih-alih mengulangi SEARCH_0 sembilan kali untuk menunjukkan 'sembilan angka', Anda mungkin ingin dapat menunjukkan ini dengan cara lain – dan Anda dapat. Demikian juga ada cara untuk menentukan rentang, seperti 'tiga hingga lima angka' atau 'satu atau lebih' (kami akan membahas keduanya nanti)

Ada juga cara untuk menunjukkan posisi di regex (apakah teksnya di awal atau akhir), dan pencocokan negatif seperti 'karakter non-numerik' atau 'karakter non-spasi'. Tetapi sebelum kita membahas bagaimana melakukan hal-hal itu di regex, saya ingin mengerjakan contoh penggunaannya dalam praktik

Mempraktikkan ini dengan tweet pemilu

Regex paling baik dipahami dengan memainkannya sendiri. Ini adalah bahasa yang sering melibatkan coba-coba – mencoba ekspresi yang berbeda sampai Anda menemukan satu yang melakukan apa yang Anda butuhkan. Untuk alasan ini, Anda dapat menemukan sejumlah 'taman bermain regex' online yang memudahkan untuk mencoba berbagai ekspresi terhadap teks contoh dan melihat kinerjanya

Apa itu regex di google sheets?

RegExr adalah salah satu taman bermain ini. di bagian atas halaman Anda dapat mengetik ekspresi, dan di kotak 'teks' di bawahnya (yang dapat Anda ubah menjadi teks Anda sendiri) itu akan menyorot bagian yang cocok dengan ekspresi. Di sebelah kiri Anda juga akan menemukan lembar contekan, referensi, dan sumber daya lainnya

Saya akan mendemonstrasikan cara menggunakan regex dengan beberapa tweet dari akun Twitter @BBCelection. Ini adalah kumpulan data yang bagus untuk mendemonstrasikan regex karena tweet itu sendiri otomatis dan mengikuti pola yang dapat diprediksi sehingga kami dapat merekayasa balik secara efektif dengan regex

Apa itu regex di google sheets?

Anda dapat mengunduh data dari tautan ini. Ini telah disederhanakan menjadi 5 kolom

  • Nama layar akun (bbcelection)
  • Stempel tanggal. SEARCH7
  • Teks tweet
  • Sumber'. misalnya, apakah tweet tersebut diposting menggunakan aplikasi web Twitter, Twitterfeed, atau Bot Pemilu BBC
  • Dan nomor ID tweet

Kami hanya akan menggunakan salah satu kolom tersebut. teks dari setiap tweet

Pertama, kita perlu memutuskan pola teks apa yang ingin kita cocokkan. Untuk itu, kita perlu melihat tweet itu sendiri. Pola apa yang dapat kita identifikasi?

Salah satu pola yang jelas adalah bahwa tweet terbaru tampaknya berfokus pada hasil pemilu nasional secara keseluruhan, dengan teks seperti ini. "HASIL. Hasil nasional untuk #BBCElection #GE2019. Hasil lengkap. https. //t. co/tFoMAGcFsq ;

Mari kita putuskan bahwa kita tidak tertarik dengan tweet tentang “hasil nasional”. Kita dapat menggunakan ______________ untuk mendeteksi tweet yang cocok dengan pola, lalu memfilter kecocokan TRUE/FALSE tersebut

Beri judul kolom F (di sel F1). “hasil_nasional”. Di bawahnya, di sel F2, ketik rumus ini

SEARCH_9

Apa itu regex di google sheets?

Regex yang sangat sederhana ini – pada dasarnya, kecocokan literal dari string karakter FIND0 – akan mengembalikan RIGHT3. Itu karena C2 tidak mengandung rangkaian karakter tersebut. Salin rumus itu ke bawah, bagaimanapun, dan itu harus mengembalikan RIGHT1 ketika terlihat di sel C4, C6, C7 dan lainnya di mana string itu muncul

Coba ubah rumus di sel F4 (yang saat ini mengembalikan RIGHT1) sehingga huruf besar N sekarang menjadi huruf kecil seperti itu

FIND_4

Formula sekarang harus mengembalikan RIGHT_3. Ini karena regex peka terhadap huruf besar-kecil. itu mencari 'hasil nasional' dengan 'n' kecil dan teks tweet di sel C4 berisi 'Hasil nasional' dengan huruf besar 'N'

Penting untuk bertanya. apakah kasus surat itu penting?

Jika tidak masalah apakah 'n' adalah huruf besar atau kecil, maka regex kita juga tidak boleh menentukannya

Jadi mari kita hapus rumus yang kita ketikkan sebelumnya dan mulai lagi, mulai dari sel F2, dengan mengetikkan ini

FIND6

…lalu salin seluruh kolom lagi

Sekarang kami mencari kecocokan di mana 'n' di awal bisa berupa huruf besar atau kecil

Itu akan memberi kita kolom yang penuh dengan nilai BENAR dan SALAH yang dapat kita gunakan untuk memfilter tweet yang berhubungan dengan hasil nasional (BENAR)

Itu adalah aplikasi regex yang sangat mendasar. satu hal yang tidak dilakukannya, misalnya, adalah menentukan apakah ada karakter yang muncul sebelum atau sesudah string FIND7 (yang biasanya harus Anda lakukan saat menggunakan regex dalam pengkodean). Tetapi Google Sheets menganggap Anda mencari di mana saja di dalam sel kecuali Anda menentukan sebaliknya dengan menggunakan karakter khusus

Sekarang mari beralih ke fungsi lain dan jelajahi beberapa regex yang lebih canggih

Menggunakan REGEXEXTRACT_ dengan regex yang lebih canggih

Sekali lagi, sebaiknya mulai dengan sepotong teks yang mewakili jenis pola yang ingin Anda cocokkan. Katakanlah kita tertarik dengan tweet yang mengumumkan hasil di area tertentu. Tweet itu terlihat seperti ini

“St Ives. CON HOLD #BBCElection #GE2019. Hasil lengkap. https. //t. co/XhpPKd29Lq ;

Dan ini

“Lembah Colne. CON GAIN DARI LAB #BBCElection #GE2019. Hasil lengkap. https. //t. co/WQ2Cp80wKX ;

Pola apa yang bisa kita pilih yang umum untuk kedua contoh?

  • Kata atau kata pertama dimulai dengan huruf besar diikuti dengan huruf kecil (apa yang disebut judul atau judul). Itu karena itu adalah nama tempat, tentu saja
  • Itu diikuti oleh titik dua
  • Dan ruang
  • Kami kemudian memiliki kumpulan tiga karakter huruf besar yang merujuk ke partai politik (mis. g. CON untuk Partai Konservatif)
  • Dan ruang
  • Kemudian empat karakter huruf besar yang mengacu pada jenis hasil (gain or hold)
  • Setelah spasi atau lebih huruf besar, karakter ini. “#BBCElection #GE2019. Hasil lengkap. ;
  • Namun, setelah dimulainya tautan itu, ada serangkaian karakter alfanumerik (huruf besar dan kecil, teks dan numerik) diikuti dengan spasi dan “;, lalu lebih banyak karakter alfanumerik (huruf besar dan kecil, teks dan numerik)

Ada banyak hal yang bisa dilakukan di sini. Secara khusus perlu ditekankan bahwa spasi sama pentingnya dengan huruf dan angka, dan tanda baca juga penting.

Kami akan mencoba membuat kolom yang mengekstraksi partai yang diumumkan sebagai pemenang pemilu di daerah tersebut

Beri kolom G nama "win_party"

Tidak ada gunanya menguji formula kami di sel G2, G3 atau G4 karena teks tweet di sel yang sesuai di kolom C tidak berhubungan dengan pihak yang menang

Jadi lewati ke sel G5, dan ketik rumus ini

FIND_9

Regex di sini menentukan tiga karakter huruf besar. Atau, lebih khusus lagi, dikatakan “karakter huruf besar apa saja. tiga di antaranya"

Pengubah di regex

Angka dalam kurung kurawal – SUBSTITUTE0 – disebut pengubah

Pengubah adalah karakter khusus dalam regex yang mengubah apa pun yang ada sebelumnya. Contohnya termasuk "satu atau lebih [apa yang dijelaskan]" dan "tiga [apa yang dijelaskan]"

Dalam hal ini pengubah SUBSTITUTE_0 sedang memodifikasi RIGHT8 (karakter huruf besar apa pun)

Berikut adalah beberapa pengubah lain yang dapat digunakan di regex

  • Untuk menentukan 'satu atau lebih dari' gunakan tanda plus. SUBSTITUTE_3
  • Untuk menentukan 'tidak ada atau lebih dari' gunakan tanda bintang. SUBSTITUTE_4
  • Untuk menentukan 'nol atau salah satu' gunakan tanda tanya. SUBSTITUTE_5
  • Untuk menentukan rentang contoh tertentu, seperti 'antara 5 dan 10 dari' Anda meletakkan angka terendah dan tertinggi dalam kurung kurawal dengan koma seperti itu. SUBSTITUTE_6
  • Untuk menentukan jumlah minimum contoh, seperti 'setidaknya 7' Anda memasukkan nomor dalam kurung kurawal diikuti dengan koma seperti itu. SUBSTITUTE_7
Apa itu regex di google sheets?

Tentu saja Anda juga bisa menulis regex ini seperti itu

SUBSTITUTE_8

Dan itu akan baik-baik saja. Pengubah hanya ada sebagai cara lain untuk mendeskripsikannya – serta cara untuk mendeskripsikan potensi variasi panjang secara lebih fleksibel, yang akan kita perlukan nanti

Entah regex berfungsi untuk sel uji kami - mengekstraksi "CON"

Salin formula itu ke bawah, dan Anda akan menemukan bahwa itu mengekstrak "RES" dari tweet yang menjadi "RESULT. ”

Apa itu regex di google sheets?

Bagaimana kita bisa menghentikan hal itu terjadi?

Cara yang sangat sederhana adalah menambahkan spasi setelah "CON" tetapi tidak setelah "RES". Rumus di baris 6 dengan spasi di dalamnya akan terlihat seperti ini

SUBSTITUTE_9

Saat rumus ini digunakan sebagai gantinya, Anda akan melihat RIGHT6 hasil untuk “RESULT. ” tweet karena tidak menemukan kecocokan

Ada satu pengecualian yang aneh. dalam satu tweet itu mengekstrak "TWL". Ini tweetnya

HASIL. Hasil nasional untuk #BBCElection #GE2019. Hasil lengkap. https. //t. co/qE0yxz5TWL ;

Menemukan kecocokan itu sulit. itu sebenarnya dari salah satu URL. kumpulan huruf dan angka acak di tautan pertama diakhiri dengan TWL – lalu ada spasi

Bagaimana kita bisa mengecualikan kecocokan acak seperti ini? . Tapi kita bisa memperluas regex kita lagi

Kali ini, kita dapat melihat ke kiri string teks yang ingin kita cocokkan. sementara "CON" diikuti oleh spasi di sebelah kanan, itu juga didahului oleh spasi di sebelah kiri

Beberapa regex yang cocok akan terlihat seperti ini

REGEXEXTRACT1

Menggunakan spasi di regex kami menciptakan masalah kecil. kami hanya menginginkan simbol pesta tiga huruf, bukan ruang di sekitarnya

Sekali lagi, kita dapat memutuskan untuk merapikannya setelah itu – atau kita dapat membungkus seluruh rumus kita dalam fungsi REGEXEXTRACT2 yang menghilangkan ruang apa pun di awal dan akhir sel, seperti itu. REGEXEXTRACT_3

Tapi kami akan mengesampingkannya untuk saat ini. Sebagai gantinya, mari kita ajukan pertanyaan. apakah semua pihak diwakili oleh kode tiga huruf? . Beberapa pihak sebenarnya adalah dua kode karakter. Demokrat Liberal adalah LD dan Sinn Fein adalah SF

Di sinilah pengubah kami menjadi sangat berguna

Kita dapat menyesuaikan ekspresi sehingga menangkap serangkaian dua atau tiga huruf besar, seperti itu

REGEXEXTRACT_4

(Perhatikan bahwa ini adalah rumus di baris 5, lihat C5 di baris itu)

Saat disalin, itu tidak hanya mengekstrak teks "CON" di tweet yang memuatnya, tetapi juga, di baris 15, "SF" untuk pesta Sinn Fein

Apa itu regex di google sheets?

Menggunakan simbol pipa untuk pertandingan 'ATAU'

Sekarang mari kita coba ekstrak apakah tweet mengatakan bahwa sebuah partai 'memperoleh' kursi (mengambilnya dari partai lain yang menang dalam pemilu lalu), atau mempertahankannya

Beri judul kolom H 'hold_or_gain'

Pola teks yang ingin kita cocokkan adalah “HOLD” atau “GAIN”. Ini memungkinkan kita untuk menggunakan karakter khusus lain di regex yang berarti 'atau'. simbol pipa, REGEXEXTRACT5

Sekali lagi teks di baris 2 tidak berisi apa yang ingin kita cocokkan, jadi lebih cepat untuk menguji regex kita di baris 3. Kemudian, di sel H3, ketik rumus ini

REGEXEXTRACT_6

Regex disini artinya ‘cari urutan karakter “HOLD” atau urutan “GAIN”‘. Lebih banyak simbol pipa dapat ditambahkan untuk menambah jumlah opsi. Misalnya kita bisa mengembangkannya untuk mencari 'MENANG' atau 'KALAH' juga, seperti itu. REGEXEXTRACT_7

Setelah diterapkan dan disalin, rumus harus mengekstrak salah satu kata tersebut jika ada di tweet

Apa itu regex di google sheets?

Jika kedua kata ada dalam teks, itu akan mengambil kecocokan pertama dengan salah satu dari itu

Menggunakan pengubah asterisk, plus, dan tanda tanya

Kami telah menggunakan pengubah kurung kurawal untuk menentukan sejumlah karakter. Sekarang mari kita gunakan pengubah lainnya. asterisk, plus dan tanda tanya

Katakanlah kita ingin mengekstrak nama tempat yang terkait dengan hasilnya. Ini muncul di awal tweet, sebelum titik dua

Nama dimulai dengan huruf kapital, lalu beberapa huruf kecil. Kami tahu hanya ada satu huruf kapital, tetapi kami tidak tahu berapa banyak huruf kecil yang mungkin ada dalam nama tertentu

Namun, kurangnya kepastian itu dapat ditangani oleh salah satu pengubah. Jika kita mengetahui setidaknya ada satu karakter tertentu, maka kita dapat menggunakan tanda plus untuk mengartikan 'satu atau lebih'

Inilah salah satu cara menggunakannya untuk tweet di baris 5

REGEXEXTRACT_8

Ini berarti 'huruf besar diikuti oleh satu atau lebih huruf kecil'

Di kolom kosong berikutnya, saya, coba ini sendiri. panggil kolom 'konstituensi' (itulah yang disebut area ini) dan ketik REGEXEXTRACT9 di sel I2, di bawah judul kolom

Saat Anda menyalinnya ke beberapa sel, ini mengambil kata pertama di setiap tweet yang dimulai dengan huruf besar diikuti oleh setidaknya satu huruf kecil

Apa itu regex di google sheets?

Saat ini hanya menangkap kata pertama – jadi hanya sebagian dari nama tempat dengan banyak kata seperti 'St Ives'. Dan itu mengambil beberapa pertandingan yang tidak kita inginkan juga, seperti 'Ini' dan 'Nasional'

Kita dapat menyelesaikan masalah tersebut sambil berjalan, tetapi untuk saat ini kita hanya ingin memahami cara kerja pengubah ini dalam praktiknya

Mari gunakan dua pengubah lainnya untuk menunjukkan cara kerjanya

Coba ubah regex Anda sehingga tanda tambah diganti dengan tanda bintang. Ini berarti 'tidak ada atau lebih dari'

Rumus di sel I2 akan terlihat seperti ini

REGEXMATCH_0

Sekarang kami meminta 'huruf kapital diikuti dengan tidak ada atau lebih huruf kecil'

Saat disalin, Anda akan melihat bahwa ini masih mengambil bagian pertama dari nama tempat seperti 'St' dan 'Arundel' tetapi hanya mengambil satu huruf di sel lain

Apa itu regex di google sheets?

Itu karena di sel-sel itu, kecocokan pertama untuk pola yang dijelaskan adalah kata pertama dalam tweet. 'KOREKSI' atau 'HASIL'. Kedua kata itu cocok dengan deskripsi 'huruf kapital diikuti dengan tidak ada atau lebih huruf kecil' - atau lebih tepatnya, 'C' dan 'R' dalam kata-kata itu cocok dengan deskripsi itu. mereka masing-masing huruf kapital diikuti dengan huruf kecil (ingat bisa tidak ada atau lebih dengan pengubah ini)

Pengubah ini tidak membantu kita dalam ungkapan ini – tetapi nanti akan sangat berguna

Sekarang mari kita coba tanda tanya

REGEXMATCH_1

Tanda tanya berarti 'tidak ada atau salah satu dari' karakter yang ditentukan. Jadi ungkapan ini sepenuhnya berarti. 'huruf besar diikuti oleh tidak ada atau satu huruf kecil'

Seperti halnya tanda bintang, 'C' dan 'R' pada kata 'KOREKSI' atau 'HASIL' dicocokkan lagi, karena masing-masing adalah huruf kapital tidak diikuti huruf kecil

Tetapi dalam kata-kata seperti 'Ini' dan 'Arundel' regex hanya cocok dengan 'Th' atau 'Ar'. kapital diikuti dengan satu huruf kecil

Apa itu regex di google sheets?

Cocok dengan karakter apa pun. wildcard

Sejauh ini, hasil terbaik yang kami dapatkan adalah mencocokkan kata pertama dari nama apa pun – tetapi kami ingin mengembangkannya untuk mendapatkan nama yang memiliki lebih dari satu kata. "St Ives", misalnya

Kita dapat mengubah regex kita agar sesuai dengan nama tersebut – misalnya dengan menduplikasi bagian pertama sehingga terlihat seperti ini. REGEXMATCH_2

Itu akan cocok dengan "St Ives" tetapi tidak akan cocok dengan nama tempat satu kata, atau yang memiliki lebih dari dua kata, seperti "Arundel & South Downs" (omong-omong, REGEXMATCH3 adalah kode untuk ampersand - dan

Jadi kita perlu pendekatan yang berbeda

Salah satu pendekatan yang bermanfaat adalah dengan melihat karakter apa saja yang muncul setelah kata yang kita inginkan

Dalam hal ini, nama tempat selalu diikuti titik dua. Jadi kami cukup meminta 'satu atau lebih karakter apa pun yang diikuti oleh titik dua'

Ada karakter khusus di regex yang berarti 'karakter apa saja'. itu adalah periode, atau titik. REGEXMATCH_4

Ini sering disebut sebagai wildcard, dengan cara yang sama Joker dalam satu pak kartu bisa menjadi 'wildcard' dan mewakili kartu apa pun di geladak.

Berikut adalah contoh ekspresi yang berarti 'satu atau lebih karakter apa pun yang diikuti oleh titik dua'

REGEXMATCH_5

Hanya ada tiga karakter di sini. wildcard yang berarti 'karakter apa saja', kemudian pengubah untuk menentukan bahwa kita menginginkan 'satu atau lebih' dari itu, dan kemudian karakter literal - titik dua - yang berarti 'titik dua'

Mari kita coba di baris 5, yang merupakan tweet pertama yang menyebutkan hasil di tempat tertentu, dengan mengubah rumusnya menjadi ini

REGEXMATCH_6

Itu berfungsi dalam mengekstraksi kedua kata "St Ives" dan usus besar yang mengikutinya (yang bisa kita bersihkan nanti)

Saat disalin ke bawah kolom, itu juga cocok dengan “Arundel & South Downs. ” – tetapi di beberapa sel cocok dengan “RESULT. ” juga, yang tidak kita inginkan

Apa itu regex di google sheets?

Sekarang kita dapat mulai lebih spesifik dalam ekspresi kita untuk mencoba mengecualikannya

Perbedaan yang jelas antara “RESULT. ” dan “St Ives. ”adalah bahwa yang pertama semuanya huruf besar sedangkan yang terakhir menggunakan setidaknya satu huruf kecil setelah huruf kapital awal

Kita dapat menggunakan kembali regex dari sebelumnya untuk menentukan ini, dan memasukkannya ke dalam ekspresi baru kita

REGEXMATCH_7

Sekarang kita katakan. 'Huruf besar diikuti oleh huruf kecil diikuti oleh satu atau lebih karakter apa pun, diikuti oleh titik dua' (catatan. ini berarti bahwa nama apa pun harus memiliki panjang setidaknya tiga karakter, termasuk spasi, sebelum titik dua, jadi "St" tidak akan cocok. Jika kami berpikir bahwa mungkin ada nama tempat kata tunggal dua karakter dalam data kami, kami dapat mengubah ekspresi untuk menggunakan SUBSTITUTE4 alih-alih SUBSTITUTE3 untuk berarti 'tidak ada atau lebih', daripada 'satu atau lebih')

Saat kami mengubah rumus kami untuk menggunakan ekspresi itu, dan menyalinnya ke bawah kolom, itu sekarang berhenti cocok dengan "RESULT"

Apa itu regex di google sheets?

Namun, sekarang cocok dengan bagian lain dari tweet yang tidak kita inginkan. bagian yang mengatakan “Hasil lengkap. ”

Kami dapat, sekali lagi, menyaring ini sebagai bagian dari pembersihan. Tapi masalah ini memberi kita alasan yang nyaman untuk menjelajahi bagian lain dari regex…

Menentukan posisi (mulai atau akhir)

Jika kita tidak dapat membedakan antara “St Ives. ” dan “Hasil lengkap. ” berdasarkan karakter mereka, kita dapat membedakan mereka berdasarkan posisinya. “St Ives” dan nama lainnya selalu muncul di awal tweet

Ada dua karakter khusus yang dapat kita gunakan di regex untuk menentukan bahwa kita sedang mencari pola di posisi tertentu

  • Tanda sisipan TRUE/FALSE0 berarti 'di awal teks'
  • Simbol dolar TRUE/FALSE1 berarti 'di akhir teks'

Karakter khusus ini harus digunakan dalam posisi tertentu. Tanda sisipan harus digunakan di awal ekspresi;

Dengan ekspresi kita, kita hanya perlu menambahkan simbol tanda sisipan ke awal ekspresi kita untuk menentukan bahwa kita hanya ingin mengembalikan kecocokan di mana pola itu muncul di awal tweet

TRUE/FALSE2

Saat kami menyesuaikan rumus kami untuk menyertakan simbol tanda sisipan, hasilnya sekarang akan berhenti mengambil “Hasil lengkap. ” karena rangkaian karakter tersebut tidak muncul di awal setiap tweet (sebaliknya, kecocokan tersebut sekarang akan berubah menjadi kesalahan RIGHT6, yang menunjukkan bahwa ia gagal menemukan kecocokan, yang kami inginkan)

Apa itu regex di google sheets?

'Melarikan diri' karakter khusus

Aspek terakhir dari regex untuk didemonstrasikan adalah apa yang harus dilakukan ketika Anda ingin mencocokkan karakter yang digunakan sebagai karakter khusus di regex. Dengan kata lain, bagaimana jika Anda ingin mencocokkan tanda dolar, atau titik, atau tanda tanya yang sebenarnya?

Situs web Regular-Expressions. info memiliki halaman bermanfaat yang menjelaskan perbedaan antara karakter literal dan karakter khusus. “Ada 12 karakter dengan arti khusus,” katanya

“Garis miring terbalik TRUE/FALSE4, tanda sisipan TRUE/FALSE0, tanda dolar TRUE/FALSE1, titik atau titik REGEXMATCH4, batang vertikal atau simbol pipa REGEXEXTRACT5, tanda tanya SUBSTITUTE5, tanda bintang atau bintang SUBSTITUTE4, tanda tambah _________3, ____h ____3, bukaan___h . Kebanyakan error saat digunakan sendiri. ”

(Karakter yang tidak ada dalam daftar itu adalah karakter literal. yaitu, mereka secara harfiah merujuk pada diri mereka sendiri. a REGEXREPLACE6 berarti 'huruf kecil c'; . )

Jika kita ingin mencari pola karakter yang menyertakan satu atau lebih karakter khusus, maka kita memerlukan cara untuk menentukan bahwa kita tidak ingin mereka diperlakukan sebagai karakter khusus.

Ini disebut 'melarikan diri' karakter khusus

Di regex Anda keluar dari karakter khusus dengan meletakkan garis miring terbalik di depannya. Jadi, misalnya, jika kita ingin mencocokkan tanda bintang, kita akan menulis REGEXREPLACE8

Kebetulan, satu-satunya karakter khusus dalam tweet yang kami gunakan adalah titik (REGEXMATCH4), juga dikenal sebagai titik atau titik. Itu mungkin karakter khusus yang paling mungkin Anda ingin cocokkan secara harfiah

Dalam kasus tweet, periode sebenarnya adalah karakter yang cukup berguna untuk difokuskan. itu memisahkan bagian pertama dari tweet yang berisi hasil, dan bagian kedua dari tweet yang berisi “Hasil lengkap. " tautan

Jika kita ingin menggunakan regex untuk mengambil bagian pertama tweet dari setiap sel, maka kita dapat menggunakan ekspresi ini

REGEXMATCH_0

Ungkapan ini menggunakan karakter periode baik sebagai karakter khusus (artinya 'karakter apa saja') dan sebagai karakter literal (artinya 'titik')

Ada banyak hal yang terjadi di sini hanya dalam empat karakter. Dimulai dengan periode yang berarti 'karakter apa pun', diikuti oleh tanda bintang - pengubah - yang berarti 'tidak ada atau lebih dari'. Berikutnya adalah garis miring terbalik yang berarti 'melarikan diri dari karakter yang mengikuti', dan periode yang kali ini - karena garis miring terbalik itu - secara harfiah berarti 'titik'

Nyatanya, lebih baik melihatnya sebagai dua pasang dua karakter daripada empat karakter terpisah. Titik dan asterisk ('tidak ada atau lebih karakter apa pun');

Secara bersama-sama, kedua pasang karakter tersebut sama dengan ungkapan 'tidak ada atau lebih dari karakter apa pun, diikuti dengan tanda titik'

Selain karakter khusus 'escape', backslash juga dapat digunakan dengan huruf tertentu untuk menunjukkan jenis karakter lainnya. Berikut beberapa contohnya

  • REGEXMATCH1 akan cocok dengan karakter huruf kecil atau huruf besar apa pun, atau angka, atau garis bawah
  • REGEXMATCH2 akan cocok dengan karakter apa pun yang bukan huruf kecil atau huruf besar, bukan angka atau garis bawah
  • REGEXMATCH_3 akan cocok dengan nomor apa pun
  • REGEXMATCH4 akan cocok dengan karakter apa pun yang bukan angka
  • REGEXMATCH5 akan cocok dengan karakter 'spasi' apa pun. itu termasuk spasi tetapi juga karakter tab, carriage return, atau baris baru – dengan kata lain karakter yang tidak 'terlihat' dalam arti menggunakan tinta jika akan dicetak
  • REGEXMATCH6 akan cocok dengan apa pun yang bukan karakter 'spasi putih'
  • REGEXMATCH7 akan – bila dikombinasikan dengan satu atau lebih karakter – cocok dengan karakter tersebut di awal, atau akhir, dari sebuah kata. Misalnya REGEXMATCH_8 akan mencari 'BEL' di awal kata, sedangkan REGEXMATCH9 akan mencari 'BEL' di akhir kata (jadi yang pertama akan cocok dengan 'BELT' tetapi bukan 'BABEL' dan yang terakhir akan cocok dengan '
  • RIGHT00 akan – bila dikombinasikan dengan satu atau lebih karakter – akan cocok jika karakter tersebut tidak berada di awal, atau akhir, dari sebuah kata. Misalnya RIGHT_01 akan mencari 'mari' di mana saja kecuali di awal kata, sementara RIGHT02 akan mencari 'mari' di mana saja kecuali di akhir kata (jadi yang pertama akan cocok dengan 'toilet' dan 'fletcher' tetapi bukan '
  • RIGHT_03 akan cocok dengan karakter baris baru
  • RIGHT_04 akan cocok dengan karakter carriage return
  • RIGHT_05 akan cocok dengan karakter tab

Beberapa di antaranya dapat digunakan sebagai alternatif dari yang sudah digunakan. misalnya REGEXMATCH_3 akan melakukan hal yang sama seperti SEARCH0 dan REGEXMATCH1 adalah cara penulisan yang lebih efisien RIGHT09

Anda akan melihat bahwa semua contoh ini juga mengikuti pola tertentu. mencari kecocokan positif melibatkan penggunaan huruf kecil yang relevan (mis. g. REGEXMATCH3 untuk digit), sambil mencari kecocokan negatif ("apa pun kecuali" sesuatu) melibatkan penggunaan padanan huruf besar (jadi, REGEXMATCH4 untuk 'bukan' digit)

Pencocokan negatif terhadap karakter tertentu juga dapat ditentukan dengan menggunakan simbol tanda sisipan TRUE/FALSE0 di dalam sepasang tanda kurung siku yang berisi karakter yang tidak ingin Anda cocokkan

Jadi, misalnya, sama seperti Anda mungkin menggunakan RIGHT8 untuk menunjukkan 'huruf besar apa pun', Anda dapat menambahkan tanda sisipan di dalam tanda kurung siku seperti itu

RIGHT_14

.. untuk menunjukkan 'huruf apa pun yang bukan karakter huruf besar'

Sama halnya, RIGHT_15 akan berarti 'huruf apapun selain huruf vokal' dan RIGHT16 akan berarti 'huruf apapun selain huruf besar Z'

Bagaimana regex digunakan dalam cerita seni

Saya membuka bab ini dengan cerita tentang data lebih dari 200.000 karya seni di galeri di seluruh Inggris Raya, dan bagaimana ekspresi reguler diperlukan untuk memilih pola dalam data tekstual

Dalam cerita khusus itu saya menggunakan regex bukan di Google Sheets, tetapi dengan bahasa pemrograman R, dan ini bisa sangat berguna jika Anda memutuskan untuk menggunakan pengkodean dalam pekerjaan Anda (Anda akan menemukan bab tentang regex dalam pengkodean Python di buku saya Scraping

Berikut adalah beberapa cara regex digunakan

Pertama, itu digunakan sebagai bagian dari proses pembersihan tanggal

  • Dalam beberapa kasus, tanggal menyertakan tanda tanya untuk menunjukkan bahwa ini adalah perkiraan. Efek sampingnya adalah kami tidak dapat melakukan perhitungan numerik seperti tahun rata-rata atau abad yang paling umum. Untuk membersihkannya kami menggunakan regex RIGHT17 (perhatikan bahwa tanda tanya diloloskan)
  • Hal yang sama diterapkan pada abad (mis. g. “C ke-19”). regex RIGHT18 digunakan untuk mengidentifikasi ini (pembersihan lebih lanjut digunakan untuk mengubahnya menjadi tanggal mulai dan berakhir)
  • Regex RIGHT19 digunakan untuk mengidentifikasi 'c' untuk 'sekitar' dengan cara yang sama
  • Regex RIGHT20 digunakan untuk mengidentifikasi dekade (mis. g. '1950-an')

Itu juga digunakan untuk mengidentifikasi variasi nama kerajaan

  • Regex RIGHT21 digunakan untuk mengidentifikasi Ratu Elizabeth I dan II. Regex serupa digunakan untuk mengidentifikasi bangsawan lain, mis. g. RIGHT_22 (ini dihasilkan dari daftar bangsawan daripada mengetik secara manual satu per satu)
  • Demikian pula, regex seperti RIGHT_23 digunakan untuk mengidentifikasi gelar kerajaan
  • Dan RIGHT_24 digunakan untuk mengidentifikasi di mana 'Prince' terjadi, tetapi tidak jika diikuti oleh 's' (jika tidak, itu juga akan cocok dengan 'Princess')

Perhatikan bahwa beberapa ekspresi ini cocok dengan karya seni yang terkait dengan barang-barang yang diberi nama bangsawan, seperti mesin uap 'Prince of Wales', atau resimen tentara 'King's Dragoons'. Ini dapat diidentifikasi dan dibersihkan pada tahap selanjutnya dari analisis data

Dan akhirnya, itu digunakan untuk mengidentifikasi sekolah seni, dengan regex RIGHT25

Anda dapat menemukan semua kode dan spreadsheet yang digunakan dalam proyek tersebut di repo GitHub untuk ceritanya di https. //github. com/BBC-Data-Unit/art-uk

Anda dapat mengunduh Lembar Google yang memiliki tweet pemilihan dan lembar lebih lanjut yang menunjukkan contoh regex di sini

Apa itu regex dan mengapa kita menggunakannya?

Ekspresi reguler (disebut juga regex atau regexp) adalah cara untuk mendeskripsikan pola . Ini digunakan untuk menemukan atau memvalidasi string atau pola teks tertentu dalam kalimat, dokumen, atau input karakter lainnya. Ekspresi reguler menggunakan karakter dasar dan khusus.

Apa yang dilakukan fungsi regex?

Fungsi ekspresi reguler mengidentifikasi pola karakter yang tepat dan berguna untuk validasi data , misalnya, pemeriksaan jenis, pemeriksaan rentang, dan pemeriksaan .

Apa itu regex dan bagaimana cara kerjanya?

Ekspresi reguler (regex) menentukan pola pencarian yang digunakan fungsi tertentu untuk mencari string . Ekspresi reguler menyediakan cara yang fleksibel untuk mencocokkan semua karakter atau bagian teks dalam string. Fungsi yang menerima ekspresi reguler menggunakan sintaksis yang didasarkan pada Ekspresi Reguler Java.

Apa itu regex match atau Google Sheets?

REGEXMATCH adalah fungsi di Google Spreadsheet yang memungkinkan Anda mencocokkan teks dengan ekspresi reguler. Sintaks fungsinya adalah sebagai berikut. REGEXMATCH(teks, regex) Argumen pertama, teks, adalah teks yang ingin Anda cocokkan dengan ekspresi reguler.