Saya menggunakan jQuery. Saya memiliki string dengan blok karakter khusus (awal dan akhir). Saya ingin mendapatkan teks dari blok karakter khusus itu. Saya menggunakan objek ekspresi reguler untuk menemukan in-string. Tetapi bagaimana saya bisa memberi tahu jQuery untuk menemukan beberapa hasil ketika memiliki dua karakter khusus atau lebih?
HTML saya:
<div id="container">
<div id="textcontainer">
Cuộc chiến pháp lý giữa [|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|] và ngân hàng đầu tư quyền lực nhất Phố Wall mới chỉ bắt đầu.
</div>
</div>
dan kode JavaScript saya:
$(document).ready(function() {
var takedata = $("#textcontainer").text();
var test = 'abcd adddb';
var filterdata = takedata.match(/(\[.+\])/);
alert(filterdata);
//end write js
});
Hasil saya adalah: [| cơ thử | nghiệm |] thị trường [| test2 | à test lần 2 |] ch khng khoán [| Mỹ | hari la nuoc my |] . Tapi ini bukan hasil yang saya inginkan :(. Bagaimana mendapatkan [teks] untuk kali 1 dan [demo] untuk kali 2?
Saya baru saja menyelesaikan pekerjaan saya setelah mencari info di internet ^^. Saya membuat kode seperti ini:
var filterdata = takedata.match(/(\[.*?\])/g);
- hasil saya adalah: [| cơ thử | nghiệm |], [| test2 | đây là test lần 2 |] ini benar !. tapi saya tidak begitu mengerti hal ini. Bisakah kamu menjawab alasanku?
?
dengan caranya sendiri 'satu atau nol' (tetapi serakah!). Misalnya'bb'.replace(/b?/, 'a') //'ab'
dan'bb'.replace(/c?/, 'a') //'abb'
c
tidak akan cocok, tetapi Anda memiliki?
, yaitu0 or 1
, maka itu akan cocok0 number of c characters
, maka menggantinya. Saya tidak tahu bagaimana cara kerjanya, karena itu tidak dapat dikompilasi dalam mesin regex yang saya coba 😢Anda benar bahwa keserakahan adalah masalah:
Jika Anda ingin mencocokkan keduanya
A--Z
, Anda harus menggunakanA.*?Z
(?
membuat*
"enggan", atau malas).Kadang-kadang ada cara yang lebih baik untuk melakukan ini, misalnya
Ini menggunakan kelas karakter yang dinegasikan dan kuantifier posesif, untuk mengurangi backtracking, dan cenderung lebih efisien.
Dalam kasus Anda, regex akan menjadi:
Sayangnya regex Javascript tidak mendukung quantifier posesif, jadi Anda hanya perlu melakukan:
Lihat juga
Ringkasan cepat
Perhatikan bahwa quantif enggan dan posesif juga berlaku untuk
{n,m}
konstruksi pengulangan yang terbatas .Contoh di Jawa:
sumber
+
bukan dua.you can emulate atomic grouping with LookAhead. (?>a) becomes (?=(a))\1
Saya yakin akan seperti ini
yang
g
pada akhirnya berarti global, sehingga tidak berhenti pada pertandingan pertama.sumber