Apakah suatu keharusan bagi setiap programmer untuk mempelajari ekspresi reguler? [Tutup]

82

Saya baru dalam pemrograman, dan pada sebuah wawancara saya mendapat pertanyaan tentang ekspresi reguler; tidak perlu dikatakan saya tidak bisa menjawab. Jadi saya bertanya-tanya apakah saya harus belajar ekspresi reguler? Apakah ini suatu keharusan bagi setiap programmer dari semua bidang? Atau itu adalah suatu keharusan untuk pemrograman untuk beberapa bidang tertentu?

Pertanyaan-pertanyaan Terkait:

pengguna
sumber
55
Saya pribadi tahu apa itu, kapan menggunakannya dan bagaimana cara sintaks google. mengangkat bahu
Tyanna
35
Ini adalah suatu keharusan bagi semua pengguna listrik. Dan programmer harus menjadi pengguna yang kuat agar menjadi produktif.
SK-logic
8
Mengapa Anda tidak ingin mempelajarinya? Anda sudah menemukan setidaknya satu situasi di mana Anda akan mendapat manfaat dari mengenal mereka. Bukankah masuk akal bahwa Anda mungkin menemukan diri Anda dalam situasi yang sama di masa depan?
FishBasketGordo
23
Hanya mereka yang bekerja dengan teks :)
Steve Jackson

Jawaban:

113

Ekspresi reguler adalah alat yang sangat nyaman, tersedia dalam banyak bahasa sehingga sebagian besar pengembang akan mempelajarinya cepat atau lambat.

Untuk pewawancara, mereka adalah cara yang bagus untuk menyelidiki pengalaman selama wawancara. Jika Anda mewawancarai seseorang yang memiliki pengalaman bertahun-tahun yang tidak memahaminya, Anda perlu menggali lebih jauh.

ptyx
sumber
4
Saya setuju, ini adalah pertanyaan yang bagus untuk pengembang berpengalaman. Tetapi meminta lulusan baru tanpa pengalaman kerja tentang mereka mungkin sedikit tidak adil - kecuali mereka benar-benar ingin menyaring pelamar tanpa pengalaman pemrograman praktis sama sekali.
SK-logic
2
@ SK-logic: Tergantung pada sekolah. Kami semua memiliki kursus wajib di tahun ke-2 yang menggunakan cukup banyak ekspresi reguler (saya akui, di situlah saya terpikat pada mereka;)). Dan lebih dari beberapa kursus tingkat senior mengangkatnya lagi, meskipun tidak pernah sekuat ini.
FrustratedWithFormsDesigner
Setuju dengan komentar di atas - Saya tidak akan mengharapkan seseorang yang baru keluar dari sekolah untuk mengetahui ekspresi reguler. Tapi saya mungkin masih bertanya.
ptyx
13
Saya seorang ahli matematika, jadi saya tidak memiliki latar belakang formal dalam ilmu komputer, tetapi saya akan berpikir bahwa regex sebenarnya diajarkan di kursus perguruan tinggi, sementara mengubah tata bahasa, parser, automatas dan yang lainnya. Saya benar-benar berharap bahwa seseorang yang baru lulus dari perguruan tinggi akan memiliki pengetahuan yang lebih baik bahwa programmer berpengalaman tanpa studi CS. : - /
Andrea
8
@ Andrea, ketika saya masih di universitas (BS dalam Ilmu Komputer) ekspresi reguler memang tercakup ketika belajar tentang tata bahasa dan automata. Namun, itu hanya konsep formal yang dibahas, bukan aplikasi. Kami tidak mempelajari sintaks ekspresi reguler POSIX atau Perl yang kompatibel, atau cara menggunakannya dalam pengkodean kami. Kami belajar cara menggambar diagram keadaan otomat kondisi-terbatas, menuliskannya sebagai ekspresi reguler, dll. Huruf-huruf Yunani terlibat, bukan grep dan file teks.
Adam Jaskiewicz
54

Ekspresi reguler adalah alat. Kebetulan itu adalah alat yang sangat berguna, jadi banyak orang memilih untuk belajar bagaimana menggunakannya. Namun, tidak ada "persyaratan" bagi Anda untuk belajar bagaimana menggunakan alat khusus ini, lebih dari ada "persyaratan" bagi Anda untuk mempelajari hal lain.

eykanal
sumber
19
Ini benar seperti mengatakan bahwa memahami logika boolean berguna, tetapi tidak diperlukan.
Oded
1
@Oded: Saya belum menemukan gunanya untuk logika boolean yang diajarkan dalam kursus saya.
DeadMG
16
@DeadMG, saya menggunakan logika boolean sepanjang waktu, seperti dalam konversi: if (!(foo && bar))=> if (!foo || !bar). Mungkin Anda sudah menggunakannya dan belum menyadari, atau mungkin Anda belum diajarkan materi yang tepat.
zzzzBov
7
Suka kontrol versi? Atau pengujian perangkat lunak?
Konrad Rudolph
2
@ruakh - Saya setuju bahwa mereka sangat berguna; Saya menggunakannya sendiri sepanjang waktu. Saya pikir semua programmer harus belajar bagaimana menggunakan regex di beberapa titik dalam karir mereka. Namun, pertanyaannya tidak menanyakan hal itu.
eykanal
33

Saya tidak akan terkejut jika, misalnya, seorang programmer game atau programmer di LHC tidak pernah belajar ekspresi reguler. Saya bahkan mungkin memberikan permainan programmer lulus tidak tahu SQL.

Tetapi, jika Anda bekerja dalam sistem informasi apa pun, dan jika Anda tidak tahu ekspresi reguler, Anda merugikan diri sendiri.

Di sisi lain, saya tidak akan mengharapkan programmer IS standar Anda untuk mengetahui matematika matriks bahwa seorang programmer game akan. Ada disiplin yang berbeda dari programmer, tetapi harus dari kita berada di bawah payung "sistem informasi".

Jonathan Rich
sumber
1
Pemrogram di LHC mungkin menggunakan ekspresi reguler untuk mencari melalui file data yang dihasilkan oleh sensor. Pemrogram game mungkin menggunakan ekspresi reguler untuk mencari file log yang dihasilkan oleh game mereka. Ok, mereka mungkin tidak perlu , tetapi mungkin bisa membuat tugas seperti itu jauh lebih mudah.
FrustratedWithFormsDesigner
1
Saya setuju, tetapi jika saya mewawancarai untuk posisi programmer game saya masih akan mempekerjakan seseorang jika mereka tidak tahu apa ekspresi reguler itu. Jika saya mempekerjakan seseorang dalam peran pemrograman bisnis tradisional yang tidak tahu apa ekspresi reguler itu, mereka mungkin tidak akan dipekerjakan.
Jonathan Rich
Itu adil, kurasa.
FrustratedWithFormsDesigner
7
Fisikawan partikel sebagian besar bekerja di lingkungan yang tidak sama, tetapi seperti semua komputer lain yang terkait dengan komunitas itu, sebagian besar keterampilan ditransmisikan oleh tradisi lisan. Tingkat kecanggihan dalam regexps bervariasi. Tapi kami tidak mencari data dengan regexps: ada terlalu banyak dan tidak dalam format teks. Kami mencari log dan DB ad hoc dan kode dan dokumentasi setengah-setengah, sama seperti orang lain.
dmckee
1
@FrustratedWithFormsDesigner, saya tidak akan menyewa seorang programmer game yang tidak tahu regex. Pemrograman pada dasarnya bersifat informasi intensif terlepas dari bidangnya . Tidak masalah apa yang Anda lakukan - dalam disiplin apa pun Anda memiliki kode sumber, editor teks yang mampu-regex, dan file log. Tanpa regex Anda akan secara signifikan kurang efisien dalam melakukan tugas-tugas tertentu (bahkan jika Anda tidak perlu menulis satu baris regex di game yang dikirimkan). Saya tidak mengatakan regex diperlukan untuk seorang programmer game. Saya hanya mengatakan saya tidak akan menyewa satu yang tidak tahu itu.
Ben Lee
22

Ekspresi reguler adalah cara yang sangat singkat untuk mengekspresikan cara mencocokkan pola dalam teks.

Persyaratan untuk mem-parsing dan mengekstrak data dari teks atau untuk memvalidasi bahwa beberapa teks sesuai dengan pola tertentu muncul sangat sering dalam pemrograman, jadi saya akan mengatakan bahwa ya, penting untuk belajar tentang mereka dan memahaminya.

Mereka adalah alat yang baik untuk ada di kotak peralatan Anda dan saya berharap setiap programmer yang berpengalaman tahu cara menggunakannya.

Salah satu sumber terbaik untuk belajar tentang ekspresi reguler adalah buku Jeffery Friedl, Mastering Regular Expressions . Itu agak maju sehingga Anda mungkin ingin benar-benar membacanya ketika Anda memiliki lebih banyak pengalaman.

Anda bisa mulai dengan tutorial di regular-expressions.info .

Oded
sumber
2
Bagi saya ini masalah selera. Saya tidak pernah benar-benar membutuhkannya. Saya telah menggunakan mereka di beberapa proyek, jadi saya tahu bagaimana mereka bekerja tetapi saya bisa dengan mudah mendapatkan tanpa dan melihat mereka lebih sering disalahgunakan daripada saya merasa membutuhkannya. Untuk pola sederhana dan Anda mungkin juga menggunakan manipulasi string ke kompleks dan lebih cepat untuk menggunakan (e) BNF setidaknya jika Anda suka saya terbiasa bekerja dengan parser
Rune FS
15

Berbeda dengan sebagian besar jawaban di sini saya tidak berpikir pengetahuan reg exs adalah keterampilan yang diperlukan untuk menjadi programmer yang produktif. Ketika saya mewawancarai kandidat untuk suatu posisi saya akan menggali lebih dalam jika mereka merasa terdorong untuk membawa keterampilan reg mereka. Mengapa? mereka sering digunakan di tempat karena mereka suka palu yang tepat tetapi seringkali yang Anda butuhkan adalah obeng. Cari SO untuk HTML dan regex dan Anda akan melihat beberapa pertanyaan dan beberapa alasan mengapa regex tidak sesuai.

Kemampuan untuk melakukan OOD yang tepat diperlukan sebelum saya akan menganjurkan untuk mempekerjakan orang yang diwawancarai, pengetahuan tentang ekspresi reguler tentu saja tidak. Dan saya tidak benar-benar berpikir ada yang percaya Anda bisa menjadi programmer yang lebih produktif mengetahui regex tetapi kurang dalam bidang-bidang seperti analisis, desain, dan pengetahuan tentang kerangka kerja yang digunakan

Tentu kadang-kadang mereka berguna tetapi dalam lebih dari 20 tahun saya sebagai pengembang profesional saya pikir saya telah menggunakannya kurang dari 20 kali dalam kode (dan saya bahkan kode beberapa skrip perl) Saya menggunakannya secara teratur untuk melakukan pencarian dan ganti saja.

Rune FS
sumber
Programmer yang tidak tahu ekspresi reguler sering membuat tumpukan besar WTF ketika ekspresi reguler akan bekerja dengan sangat baik. Programmer yang HANYA tahu ekspresi reguler sering membuat tumpukan WTF yang lebih kecil tetapi tidak benar-benar berusaha untuk memproses bahasa non-reguler (misalnya HTML) dengan ekspresi reguler.
kevin cline
14

Terlepas dari domain tempat Anda bekerja, ekspresi reguler adalah alat yang berguna untuk diketahui karena sebagian besar bahasa pemrograman ditulis sebagai teks biasa. Oleh karena itu Regex adalah cara yang bagus untuk memanipulasi dan memperbaiki kode sumber Anda dan itu dibangun ke banyak editor teks. Saya telah melihat banyak programmer membuat perubahan berulang pada file sumber ketika ekspresi reguler akan membuat perubahan lebih cepat dan akurat.

Inilah yang dibahas Bab 3 Programmer Pragmatis dengan teks biasa sebagai "bahan baku dasar pemrograman".

JohnTESlade
sumber
Mengapa Anda tidak menggunakan ide yang mendukung refactoring?
NimChimpsky
2
Jika saya mengajukan pertanyaan di posting ini, saya akan memberi Anda tanda centang. Ini adalah satu-satunya alasan paling penting saya tidak akan pernah mempekerjakan seseorang yang tidak tahu regex. Ini adalah pengeditan kode yang kuat dan alat pencarian log bahkan jika Anda tidak perlu menulis satu baris kode pun yang menggunakannya. Seseorang yang tidak tahu itu akan menjadi pesanan yang besarnya kurang efisien untuk tugas-tugas harian tertentu.
Ben Lee
10

Jeff Atwood menulis blog yang bagus tentang ekspresi reguler, di dalamnya ada kutipan yang luar biasa ini:

Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems. [Jamie Zawinski]

Ada juga jawaban yang bagus untuk pertanyaan bagus stack overflow yang mungkin ingin Anda periksa.

Anda harus tahu sedikit tentang hal itu. Ekspresi reguler mudah dipelajari tetapi sulit untuk dikuasai. Anda tidak perlu mempelajari segala sesuatu tentang hal itu untuk mulai menggunakannya. Masuk akal saja tentang hal itu.

 

tl; dr

Anda perlu tahu tentang teknologinya sehingga Anda dapat membuat keputusan yang baik kapan menggunakannya.

Makach
sumber
8

Saya bekerja di basis kode tertanam yang tidak memiliki perpustakaan ekspresi reguler yang tersedia. Sebuah tugas tertentu membutuhkan 275 baris kode, dan membutuhkan waktu sekitar dua minggu untuk men-debug semua kasus sudut, bolak-balik antara penguji dan pengembang. Saya kemudian menulis fungsi untuk melakukan hal yang sama sebagai bagian dari utilitas javascript. The persis tugas yang sama menggunakan ekspresi reguler digunakan 10 baris kode dan bekerja dengan sempurna di sekitar 15 menit.

Apakah Anda memerlukan ekspresi reguler? Secara teknis tidak, tapi bodoh jika sengaja tidak mengetahui alat yang efisien.

Karl Bielefeldt
sumber
6

mengutip jawaban lain:

Ekspresi reguler adalah cara yang sangat singkat untuk mengekspresikan cara mencocokkan pola dalam teks.

Jadi, jika ini merupakan bagian penting dari pekerjaan Anda, mungkin ada cara yang lebih baik untuk merancang sistem yang Anda kembangkan. Kecuali banyak teks adalah domain khusus untuk area Anda (mis. Bioinformatika).

Saya telah bekerja pada tiga sistem perusahaan yang berbeda (di tiga perusahaan berbeda selama sepuluh tahun) dan saya telah menulisnya kurang dari lima kali, dan itu termasuk menyalin dan menempelkan validator email dasar dua kali.

NimChimpsky
sumber
2
Banyak teks selalu spesifik domain. Anda adalah seorang programmer . Teks (dalam bentuk kode sumber) adalah domain Anda. Memanipulasi teks dengan ekspresi reguler secara efisien menjadikan Anda pemrogram yang lebih efisien.
quanticle
2
@juan yang tidak masuk akal. Anda benar-benar memanipulasi kode sumber Anda dengan ekspresi reguler? Itu terdengar seperti mimpi buruk absolut. Ekspresi reguler adalah bagian dari kode Anda dan kode Anda berinteraksi dengan data spesifik domain.
NimChimpsky
3
Saya memanipulasi kode sumber dengan ekspresi reguler. Refactoring potongan besar kode dengan tangan membosankan dan rawan kesalahan. Menggunakan editor yang mendukung pencarian dan penggantian ekspresi reguler (petunjuk: hampir setiap editor mendukung pencarian dan penggantian regexp) membuat refactoring jauh lebih mudah.
quanticle
3
@Dunk, dia tidak mengatakan bahwa itu adalah keuntungan efisiensi besar, selama umur proyek, tetapi itu bisa menjadi keuntungan besar selama periode waktu kecil. Saya juga telah melakukan refactoring di mana ada ratusan, bahkan ribuan, perubahan lusinan file. Selama proyek berlangsung, jam yang dihemat tidak signifikan, tetapi saya jelas tidak ingin mengambil jam atau hari yang diperlukan untuk melakukan perubahan yang sama dengan tangan. IDE modern dapat melakukan beberapa hal ini untuk Anda tanpa Anda menulis regex, tetapi kadang-kadang tidak bisa (misalnya menggunakan pola asimment umum).
jmoreno
2
@NimChimpsky Regexps bekerja di mana-mana. IDE dan alat refactoring hanya berfungsi untuk bahasa tertentu. Misalnya, akankah alat refactoring Anda memungkinkan saya menelusuri semua templat saya dan menemukan / menghapus string yang terlihat seperti nomor telepon ( sites.google.com/site/steveyegge2/… )?
quanticle
4

Ekspresi reguler dapat dianggap sebagai alat pemrosesan yang sangat berguna, lintas bahasa, lintas platform. Saya bisa menggunakan regex di kode saya, saya bisa menggunakan regex di editor saya, saya bisa menggunakan regex di commandline!

Bukan hanya itu yang Anda butuhkan, atau harus mempelajarinya. Itu lebih seperti

WOW! SAYA SUKA REGEX!

Xeoncross
sumber
4

Anda tidak perlu tahu semua kebiasaan regex kecil dengan hati untuk menjadi programmer yang hebat, terutama karena mereka semua cenderung sedikit berbeda di sekitar implementasi yang berbeda dan bahasa pemrograman. Apa yang Anda lakukan perlu Anda ketahui adalah

  • Apa yang dimaksud dengan ekspresi dan regex reguler.
  • Apa hal yang mereka lakukan secara efisien (parsing bahasa reguler)
  • Hal-hal apa yang tidak efisien (mengurai hal-hal yang bersarang, menggunakan banyak referensi)
  • Di mana mendapatkan informasi tentang sintaks setiap kali Anda perlu membaca atau menulis satu.

Bagaimanapun, Anda bahkan tidak perlu terlalu khawatir tentang apakah perlu usaha terlalu keras untuk mempelajarinya sejak awal. Operator paling sederhana ( ., *, |, (), dll) yang hampir secara universal hadir dan pergi panjang jalan!

hugomg
sumber
Saya pikir ini adalah poin yang sangat bagus. Mengetahui cara menggunakan referensi-kembali dan fitur-fitur canggih lainnya dari beberapa mesin RE hanya cukup bermanfaat. Dalam banyak / kebanyakan kasus, menggabungkan penggunaan RE dengan sedikit logika lebih mudah dibaca dan lebih mudah dipertahankan.
Mark Bessey
3

Seperti yang telah disebutkan Regex adalah alat , alat IMHO yang sangat berguna.

Pertimbangkan contoh ini:

//fomat number using string.replace and regex in javascript
function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
} 

Hanya satu baris untuk mengonversi, misalnya, angka seperti ini 1000000.00 menjadi "1.000.000,00"

Menggunakan metode lain akan jauh lebih kompleks

emont01
sumber
2
dan ini tidak rumit? ini menggunakan beberapa fitur khusus yang tidak ada dalam set regex standar. panjang dan isi yang sederhana akan baik-baik saja untuk ini
ratchet freak
2

Itu bukan keharusan. Anda hanya perlu menyadari keberadaan mereka dan kapan menggunakannya. Khusus sintaksis mudah ditemukan dan diperbaiki menggunakan google dan alat online.

Sarang
sumber
2

Saya benar-benar akan menyarankan Anda untuk belajar regexps. Di tempat kerja, ketika kami merekrut programmer, para kandidat yang tidak tahu regexp umumnya cepat dibuang. Bukan karena mereka benar-benar perlu mengetahui ekspresi reguler, tetapi karena itu adalah indikator yang sangat baik dari tingkat pemahaman mereka tentang pemrograman dan tingkat kecanduan pemrograman.

Seorang programmer sejati mengetahui ekspresi reguler mereka

Ini agak bias, bagaimanapun, karena saya sebagian besar terlibat dalam pemrograman web, di mana ekspresi reguler adalah sesuatu yang Anda pasti akan menemukan banyak, baik di sisi server dan di sisi klien. Jika Anda adalah programmer perakitan untuk sistem bawaan di mesin pencuci piring, Anda mungkin tidak akan menemukan ekspresi reguler sama sekali. Tapi itu masih mungkin berguna, karena Anda dalam banyak kasus lebih bisa menggunakan lingkungan pengembangan Anda ketika Anda tahu ekspresi reguler (mencari dan mengganti, mencari file, mencari dalam banyak file, dll ...).

Juga, Anda akan merasa lebih mudah untuk diakui oleh sesama programmer jika Anda mengetahuinya.

Aron Cederholm
sumber
Juga, adalah sia-sia untuk mempelajari spesifikasi lengkap dengan hati di awal, karena ada banyak dialek yang berbeda. Alih-alih, cobalah untuk fokus mempelajari dasar-dasarnya: (1) buat beberapa regexps sederhana dan pelajari artinya. * + {} [] () dan - dan beberapa kelas dasar. (2) dengan spesifikasi yang diberikan di tangan Anda, cobalah untuk memahami apa yang terjadi di regexpes yang Anda temui.
Aron Cederholm
Untuk apa Anda menggunakan reg exps di web dev. Ini yang saya lakukan dan saya gunakan 5 kali dalam 10 tahun +.
NimChimpsky
Untuk pemula: Memilah atau memvalidasi input pengguna (mis. Email, kode pos / kode pos, formulir pencarian pengguna). Tetapi juga untuk tujuan I18n dan l10n untuk string terjemahan khusus dan variabel dalam berbagai bahasa / lokal. Dan mereka yakin datang bantuan dengan beberapa deteksi kesalahan & cukup banyak penanganan kesalahan. Dan di dunia CMS / blog / komentar untuk markup wiki / forum. Untuk data eksternal (input pengguna, halaman memo, sumber daya yang disinkronkan, dll.) Parsing, penanganan, dan penulisan ulang konten / tautan / apa pun. Plus untuk semua banyak keperluan statistik dan pembukuan (deteksi peramban, pengurutan rujukan, ...)
Aron Cederholm
-1 untuk komentar bodoh yang gila-gilaan "Seorang programmer sejati ..."
Dunk
Ini cara yang agak dangkal memvalidasi input pengguna dan saya akan menduga jika regex Anda 100% akurat (validasi email adalah yang terkenal). Dan saya tidak grok "string terjemahan khusus dan variabel ini dalam beberapa bahasa / lokal" Anda menerjemahkan antara bahasa menggunakan regex - er wtf? Tujuan statistik - Anda melakukan statistik dengan ekspresi reguler? Tautan penulisan ulang / konten dengan regex terdengar seperti bau kode bagi saya.
NimChimpsky
1

Apakah itu suatu keharusan? Anda sudah tahu apa yang HARUS Anda ketahui: bahwa mereka ada, untuk apa mereka, dan untuk apa mereka digunakan. Tugas Anda sebagai programmer adalah menyelesaikan masalah. Anda sekarang cukup tahu untuk mulai memfaktorkannya ke dalam solusi Anda untuk menyelesaikan masalah Anda. Haruskah Anda mempelajari regex? Benar. Prioritas terserah Anda ... ada pekerjaan di mana mereka akan digunakan setiap hari, dan pekerjaan di mana mereka tidak akan pernah digunakan. Panduan sederhana adalah berapa banyak pola yang cocok dengan masalah yang Anda harapkan akan temui.

jmoreno
sumber
1

Hmm, saya perlu memisahkan koma dan menampilkan daftar string ini, izinkan saya menulis fungsi yang berisi loop for yang mengambil argumen separator, dan terus menambahkannya bersama-sama ... atau saya bisa menggunakan perintah 'join' yang ada ini.

Saya perlu mengurutkan objek-objek kompleks ini berdasarkan pada beberapa atribut yang dimiliki oleh masing-masing objek, izinkan saya mengingatkan diri saya sendiri bagaimana menulis fungsi sortir yang melakukan itu, oh tidak, saya hanya dapat menggunakan fungsi sortir standar yang ada yang didukung oleh bahasa ini. Saya harus belajar cara menulis komparator khusus tetapi seharusnya tidak terlalu sulit, itu jelas lebih baik daripada mempertahankan fungsi sortir saya sendiri.

Saya agak takut dengan gagasan metode virtual, tetapi seharusnya membantu saya mengurangi daftar ini, masing-masing untuk jenis item yang berbeda, hingga ke satu daftar. Maka saya tidak perlu menulis setengah lusin pernyataan serupa yang memproses setiap daftar dengan cara yang berbeda. Sepertinya saya harus belajar keras dan belajar hal-hal itu karena kode saya akan jauh lebih sederhana dan bersih jika saya melakukannya.

Saya perlu mengekstrak dari file teks ini pasangan kata dan nilai ini di antara semua kebisingan lainnya, izinkan saya menulis parser lima puluh baris untuk membaca karakter satu per satu dan jika salah satu karakter terlihat seperti awal dari apa yang saya mencari saya akan mengatur variabel keadaan ini dan mulai parsing secara berbeda dan seterusnya dll ... tentu saja kasus saya jelas sangat istimewa tidak ada orang lain yang pernah menemukan masalah seperti ini sebelumnya dan menemukan solusi generik yang mengambil satu baris kode untuk melakukannya. Itu mengingatkan saya bahwa saya harus membawa buku-buku pemrograman yang tidak pernah saya baca ke toko buku bekas.

Benediktus
sumber
1

Jawaban Singkat: Tidak Tapi .... pengetahuan adalah kekuatan.

Saya seorang pengembang web dan saya menemukan Ekspresi Reguler yang biasanya saya butuhkan sudah dituliskan untuk saya. Namun saya punya masalah dengan menyalin dan menempel dan tidak menyadari apa yang dilakukannya atau tidak, yang merupakan bahaya menyalin dan menempel APA SAJA.

Salah satu contoh: Regex email yang saya salin dan tempel tidak mengizinkan untuk periode atau plus dalam email yang diizinkan dalam spesifikasi alamat email. Bahkan banyak orang menggunakan gmail dengan [email protected] sehingga menjadi mudah untuk memfilter 'sitename' jika mereka memilih spam.

The PPQ
sumber
0

ekspresi reguler? Hmmm ... kadang-kadang berguna untuk mengenal mereka tetapi sebagian besar waktu Anda selalu menggunakan yang sama. Saya sudah sering menggunakan regex tetapi saya tidak akan mengatakan bahwa saya baik-baik saja. Saya tidak suka sama sekali dan saya pikir ada hal-hal yang lebih penting untuk diketahui daripada regex.

Tetapi dalam validasi formulars atau data itu sangat berguna. Saya pikir semua bentuk profesional divalidasi dengan regex. ASP.NET menggunakannya.

Tetapi sama sekali: Cobalah untuk melakukan ekspresi ketika Anda membutuhkannya dan simpan. Anda akan menggunakannya semoga lebih dari sekali. Tapi jangan buang waktu Anda dengan RegEx!

Smokefoot
sumber
0

Itu tergantung pada area / platform tempat Anda bekerja

  1. Untuk aplikasi desktop, Anda dapat menjalani kehidupan kool tanpa mengetahui apa pun tentang ekspresi reguler. Tapi ingat, Visual Studio memiliki pencarian ekspresi reguler tapi saya ingin tahu apakah ada yang menggunakannya secara teratur. Saya pikir tidak (Anda harus memperbaiki ekspresi reguler Anda terlebih dahulu karena Anda dapat melakukan pencarian :)).

  2. Sebagai pengembang web, Anda kemungkinan besar harus belajar Ekspresi Reguler. Anda dapat melakukannya karena Anda dapat dengan mudah menemukan potongan kode online yang cukup yang Anda butuhkan tetapi belajar akan membantu.

Ada bidang-bidang seperti dokumentasi, litigasi, hal-hal hukum di mana ekspresi reguler adalah alat yang sangat diperlukan. Anda harus mengetahuinya. Jika tidak, Anda tidak akan mendapatkan pekerjaan.

Jadi singkatnya, jika itu bukan bagian dari deskripsi pekerjaan, jangan repot-repot tentang hal itu. Jika Anda suka mempelajarinya, pelajarilah untuk bersenang-senang.

Noname
sumber
0

Ekspresi reguler adalah alat yang sangat berguna, dan ada banyak situasi, ketika programmer harus menggunakannya. Anda tidak harus mempelajari semuanya dengan hati untuk digunakan. Cukup gunakan referensi dan lakukan tugas Anda. Setelah 10-20-50-100 (tergantung pada programmer) tugas-tugas di mana Anda telah menggunakan ekspresi reguler, Anda akan tahu semuanya dengan hati. Mereka sedang dipelajari sendiri, Anda tidak harus mempelajarinya secara khusus.

Larry Cinnabar
sumber
0

Saya sudah melihat banyak jawaban untuk ini, tetapi mereka semua tampaknya tentang manfaat mengetahui ekspresi reguler sebagai alat di kotak alat programmer.

Saya lebih suka menganggap ekspresi reguler sebagai jenis pengetahuan yang memperluas pemahaman seseorang tentang cara kerja komputer. Begitu seseorang benar-benar memahami bahasa biasa, dan Anda dapat mengekspresikannya dengan tiga operasi sederhana, saya percaya itu memberi mereka sesuatu di luar sekadar alat untuk memvalidasi string sederhana.

Mereka menjadi dapat lebih memahami parsing secara umum, yang berguna untuk hampir semua jenis pemrograman, dan lebih memahami bagaimana alat yang kita gunakan secara teratur (kompiler, editor, browser, dll) bekerja.

Manfaat praktis menggunakan ekspresi reguler tentu saja sangat besar. Bahkan jika Anda tidak "memprogram" dengan mereka - saya menggunakan ekspresi reguler untuk menemukan / mengganti di editor saya sepanjang waktu, dan mengukur seberapa produktif mereka membuat saya.

Jadi, sementara itu tidak perlu, saya pikir itu adalah salah satu alat pertama yang harus dipelajari oleh seorang programmer.

Avi
sumber
0

Rob Pike tidak berpikir begitu :

Ekspresi reguler sulit untuk ditulis, sulit untuk ditulis dengan baik, dan bisa mahal dibandingkan teknologi lainnya. Teknik lexing dan parsing standar sangat mudah untuk ditulis, begitu umum, dan sangat mudah beradaptasi, tidak ada alasan untuk menggunakan ekspresi reguler.

Cara lain untuk melihatnya adalah bahwa lexer dan parsing cocok dengan pola yang ditentukan secara statis, tetapi kekuatan ekspresi reguler adalah bahwa mereka menyediakan cara untuk mengekspresikan pola secara dinamis. Mereka hebat dalam editor teks dan alat pencarian, tetapi ketika Anda tahu pada waktu kompilasi semua hal yang Anda cari, ekspresi reguler membawa jauh lebih umum dan fleksibilitas daripada yang Anda butuhkan.

Mendorong ekspresi reguler sebagai obat mujarab untuk semua masalah pemrosesan teks tidak hanya rekayasa yang malas dan buruk, tetapi juga memperkuat penggunaannya oleh orang-orang yang seharusnya tidak menggunakannya sama sekali.

Perlu dicatat bahwa Pike mengakui mereka memiliki tempat, tentu saja, dan IMHO, ekspresi reguler adalah alat yang sangat kuat, yang benar-benar menghargai waktu yang saya habiskan untuk belajar menggunakan, dan dari sudut pandang itu, saya benar-benar akan merekomendasikan belajar mereka. Tapi mungkin masalah sebenarnya adalah bahwa mereka adalah band-aid yang membuat saya tidak terlalu tahu tentang lexing dan parsing daripada yang seharusnya. :)

Weston C
sumber
0

Biar saya katakan saja, Regular Expressions seringkali merupakan alat yang tepat untuk pekerjaan itu dan cukup praktis, terutama dengan aplikasi yang melakukan banyak pemrosesan teks. Namun, menghafal mereka adalah kegilaan. Saya memiliki lembar cheat yang disematkan di dinding saya yang memiliki semua karakter khusus, jangkar, kelas karakter, pengubah pola, karakter metachar ... Hanya menghabiskan 20 menit yang diperlukan untuk mempelajari cara menggunakannya dan mendapatkan lembar contekan untuk disimpan melacak segalanya. Yang Anda butuhkan adalah untuk dapat menulis ekspresi reguler saat Anda membutuhkannya, yang biasanya setiap 6 bulan - sekitar sesering Anda menemukan masalah di mana mereka adalah alat terbaik untuk digunakan untuk pekerjaan itu. Kecuali Anda berada di Perl, Latx, Emacs, atau tim pengolah teks berat lainnya.

Jonathan Henson
sumber