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:
regular-expressions
pengguna
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
if (!(foo && bar))
=>if (!foo || !bar)
. Mungkin Anda sudah menggunakannya dan belum menyadari, atau mungkin Anda belum diajarkan materi yang tepat.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".
sumber
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 .
sumber
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.
sumber
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".
sumber
Jeff Atwood menulis blog yang bagus tentang ekspresi reguler, di dalamnya ada kutipan yang luar biasa ini:
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.
sumber
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.
sumber
mengutip jawaban lain:
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.
sumber
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!
sumber
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
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!sumber
Seperti yang telah disebutkan Regex adalah alat , alat IMHO yang sangat berguna.
Pertimbangkan contoh ini:
Hanya satu baris untuk mengonversi, misalnya, angka seperti ini 1000000.00 menjadi "1.000.000,00"
Menggunakan metode lain akan jauh lebih kompleks
sumber
Itu bukan keharusan. Anda hanya perlu menyadari keberadaan mereka dan kapan menggunakannya. Khusus sintaksis mudah ditemukan dan diperbaiki menggunakan google dan alat online.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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!
sumber
Itu tergantung pada area / platform tempat Anda bekerja
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 :)).
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.
sumber
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.
sumber
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.
sumber
Rob Pike tidak berpikir begitu :
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. :)
sumber
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.
sumber