Sayangnya, meskipun telah mencoba mempelajari regex setidaknya satu kali dalam setahun selama bertahun-tahun yang saya ingat, saya selalu lupa karena saya jarang menggunakannya. Tahun ini resolusi tahun baru saya adalah untuk tidak mencoba dan mempelajari regex lagi - Jadi tahun ini untuk menyelamatkan saya dari air mata, saya akan memberikannya ke Stack Overflow . (Remix Natal terakhir).
Saya ingin meneruskan string dalam format ini {getThis}
, dan mengembalikan string tersebut getThis
. Adakah yang bisa membantu untuk tetap berpegang pada resolusi tahun baru saya?
Pertanyaan terkait tentang Stack Overflow:
javascript
regex
ChrisInCambo
sumber
sumber
Jawaban:
Jika string Anda akan selalu dalam format itu, ekspresi reguler berlebihan:
substring(1
Berarti memulai satu karakter dalam (melewati yang pertama{
) dan,g.length-1)
berarti mengambil karakter sampai (tetapi tidak termasuk) karakter pada panjang string minus satu. Ini berfungsi karena posisinya berbasis nol, yaitug.length-1
posisi terakhir.Bagi pembaca selain pembuatnya: Jika memiliki menjadi regex, gunakan
/{([^}]*)}/
jika Anda ingin mengizinkan string kosong, atau/{([^}]+)}/
jika Anda ingin hanya cocok ketika ada setidaknya satu karakter antara kurung kurawal. Kerusakan:/
: mulai pola regex{
: penjepit keriting literal(
: mulai menangkap[
: mulai menentukan kelas karakter yang akan ditangkap^}
: "apa pun selain}
"]
: OK, itulah definisi seluruh kelas kami*
: sejumlah karakter yang cocok dengan kelas yang baru saja kita tentukan)
: selesai menangkap}
: penjepit keriting literal harus segera mengikuti apa yang kita tangkap/
: akhiri pola regexsumber
Mencoba
Artinya, cocokkan karakter apa pun antara {dan}, tetapi jangan serakah - cocokkan string terpendek yang diakhiri dengan} (? Stop * menjadi serakah). Tanda kurung memungkinkan Anda mengekstrak bagian yang cocok.
Cara lain adalah
Ini cocok dengan semua karakter kecuali a} char (cara lain untuk tidak serakah)
sumber
g
di akhir membuatnya menjadi pencarian global. Lihat contoh kerjasumber
Coba ini:
Sebagai contoh
akan kembali
gskinner.com
,ssd.sd
.sumber
\}
blok pertama?}
, bahkan jika tidak dimulai{
.Berikut solusi sederhana menggunakan ganti javascript
Seperti yang ditunjukkan jawaban yang diterima di atas, masalah asli mudah diselesaikan dengan substring, tetapi menggunakan replace dapat menyelesaikan kasus penggunaan yang lebih rumit
Jika Anda memiliki string seperti "randomstring999 [fieldname]" Anda menggunakan pola yang sedikit berbeda untuk mendapatkan fieldname
sumber
Yang ini berfungsi di Textmate dan cocok dengan semua yang ada di file CSS di antara tanda kurung kurawal.
selector {. . matches here including white space. . .}
Jika Anda ingin lebih dapat mengembalikan konten, maka bungkus semuanya dalam satu set tanda kurung seperti ini:
dan Anda dapat mengakses isinya melalui $ 1.
Ini juga berfungsi untuk fungsi, tetapi saya belum mengujinya dengan tanda kurung kurawal bersarang.
sumber
Anda ingin menggunakan regex lookahead dan lookbehind. Ini hanya akan memberi Anda apa yang ada di dalam kurung kurawal:
sumber
Coba ini
sumber
Regex untuk mendapatkan array string dengan kurung kurawal tertutup terjadi dalam string, bukan hanya menemukan kemunculan pertama.
sumber
Saya telah melihat ke dalam jawaban lain, dan logika penting tampaknya hilang dari mereka. yaitu, pilih semuanya di antara dua tanda kurung KONSEKUTIF, tetapi BUKAN tanda kurung
jadi, inilah jawaban saya
sumber
.replace(/.*{(.*)}.*/, '$1')
Sayangnya, yang lebih sederhana mengembalikan seluruh string jika regex tidak cocok. Potongan kode di atas dapat lebih mudah mendeteksi kecocokan.sumber
Coba yang ini, menurut http://www.regextester.com, ini berfungsi untuk js normaly.
([^{]*?)(?=\})
sumber
/([^{]*?)\w(?=\})/gmi
Anda dapat menggunakan rekursi regex ini untuk mencocokkan semuanya, bahkan yang lain
{}
(seperti teks JSON):sumber
Bahkan ini membantu saya saat mencoba menyelesaikan masalah seseorang,
Sebagai contoh:
Keluaran:
sumber