Qo'shtirnoq ichidagi satrlarni topish
Qo’sh qo’shtirnoq ichidagi satrlarni topish uchun regexp yarating "..."
.
Satrlar JavaScript satrlari kabi escaping ni qo’llab-quvvatlashi kerak. Masalan, qo’shtirnoqlar \"
sifatida qo’shilishi mumkin, yangi qator \n
sifatida va slash o’zi \\
sifatida.
let str = 'Xuddi "shu yerda" kabi.';
E’tibor bering, xususan, escaped qo’shtirnoq \"
satrni tugatmaydi.
Shuning uchun biz bir qo’shtirnoqdan ikkinchisigacha yo’lda escaped qo’shtirnoqlarni e’tiborsiz qoldirib qidirishimiz kerak.
Bu vazifaning muhim qismi, aks holda u oddiy bo’lar edi.
Mos keladigan satrlar misollari:
.. "meni sinab ko'r" ..
.. "\"Salom\" degin!" ... (ichida escaped qo'shtirnoqlar)
.. "\\" .. (ichida qo'sh slash)
.. "\\ \"" .. (ichida qo'sh slash va escaped qo'shtirnoq)
JavaScript da biz slashlarni satrga to’g’ri o’tkazish uchun ularni ikki marta yozishimiz kerak:
let str = ' .. "meni sinab ko'r" .. "\"Salom\" degin!" .. "\\\\ \\"" .. ';
// xotiradagi satr
alert(str); // .. "meni sinab ko'r" .. "\"Salom\" degin!" .. "\\ \"" ..
Yechim: /"(\\.|[^"\\])*"/g
.
Bosqichma-bosqich:
- Avval biz
"
ochilish iqtibosini qidiramiz - Agar bizda teskari qiyshiq chiziq
\\
bo’lsa (bu maxsus belgi bo’lgani uchun uni naqshda ikki barobarga qo’yishimiz kerak), undan keyin har qanday belgi yaxshi bo’ladi (nuqta). - Aks holda biz qo’shtirnoq (bu qatorning oxirini bildiradi) va teskari chiziqdan tashqari har qanday belgini olamiz (yakka teskari qiyshiq chiziqning oldini olish uchun teskari chiziq faqat undan keyin boshqa belgi bilan ishlatiladi):
[^"\\]
- Yakunlovchi iqtibosgacha shunday.
Amalda:
let regexp = /"(\\.|[^"\\])*"/g;
let str = '.. "meni sinab ko'ring" .. "\\"Salom\\" deb ayting!" .. "\\\\ \\"" ..';
alert(str.match(regexp)); // "meni sinab ko'ring","\"Salom\" deb ayt!","\\ \""