Saya mencoba untuk mengurai dokumen yang memiliki nomor referensi berserakan di dalamnya.
Teks teks teks {4: 2} teks yang lebih luar biasa {4: 3} lebih lama lagi {222: 115} dan beberapa teks lagi.
Referensi akan selalu berada dalam tanda kurung, dan akan selalu ada titik dua di antara keduanya. Saya menulis ekspresi untuk menemukan mereka.
{[0-9]:[0-9]}
Namun, ini jelas gagal saat Anda menemukan dua atau tiga digit angka, dan saya kesulitan mencari tahu apa yang seharusnya. Tidak akan pernah ada lebih dari 3 digit {999: 999} adalah ukuran maksimum untuk ditangani.
Ada yang punya ide ekspresi yang tepat untuk menangani ini?
regex
tag.Jawaban:
coba tambahkan plus (es)
sumber
Mesin regex apa yang Anda gunakan? Kebanyakan dari mereka akan mendukung ekspresi berikut:
Itu
\d
sebenarnya adalah singkatan dari[0-9]
, tapi bagian yang penting adalah penambahan+
yang artinya "satu atau lebih".sumber
Coba ini:
The
{1,3}
berarti "cocok antara 1 dan 3 karakter sebelumnya".sumber
Anda dapat menentukan berapa kali Anda ingin item sebelumnya cocok dengan menggunakan
{min,max}
.Selain itu, Anda dapat menggunakan
\d
untuk digit, bukan[0-9]
untuk kebanyakan ragam regex:Anda mungkin juga ingin mempertimbangkan keluar dari luar
{
dan}
, hanya untuk memperjelas bahwa mereka bukan bagian dari definisi pengulangan.sumber
{\ d *: \ d *} seharusnya berfungsi.
* berarti kecocokan 0 atau lebih dari kejadian sebelumnya, yang merupakan digit.
sumber