RegEx - Cocokkan Jumlah Panjang Variabel


131

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?


8
Bahkan jika OP tidak peduli, saya penasaran: Mengapa downvote untuk pertanyaan ini? Saya tidak melihat ada yang salah dengan itu.
Yohanes

3
@ John: Untuk beberapa alasan, orang suka memberikan suara negatif pada pertanyaan yang memiliki jawaban yang mudah, terutama di regextag.
CanSpice

1
Pada akhirnya pertanyaan ini mendapat peringkat yang lebih tinggi di google dan saya menemukan jawaban saya di pertanyaan ini.
Jasonfish

Jawaban:


134
{[0-9]+:[0-9]+}

coba tambahkan plus (es)


Ini butuh waktu terlalu lama untuk saya temukan ... terima kasih atas informasi ini!
level42

76

Mesin regex apa yang Anda gunakan? Kebanyakan dari mereka akan mendukung ekspresi berikut:

\{\d+:\d+\}

Itu \dsebenarnya adalah singkatan dari [0-9], tapi bagian yang penting adalah penambahan +yang artinya "satu atau lebih".


31

Coba ini:

{[0-9]{1,3}:[0-9]{1,3}}

The {1,3}berarti "cocok antara 1 dan 3 karakter sebelumnya".


8

Anda dapat menentukan berapa kali Anda ingin item sebelumnya cocok dengan menggunakan {min,max}.

{[0-9]{1,3}:[0-9]{1,3}}

Selain itu, Anda dapat menggunakan \duntuk digit, bukan [0-9]untuk kebanyakan ragam regex:

{\d{1,3}:\d{1,3}}

Anda mungkin juga ingin mempertimbangkan keluar dari luar {dan }, hanya untuk memperjelas bahwa mereka bukan bagian dari definisi pengulangan.


2
Tidak, jangan lakukan dengan sebagian besar rasa regex, kecuali Anda menyukai angka non-eropa: fileformat.info/info/unicode/category/Nd/list.htm
xanatos

1

{\ d *: \ d *} seharusnya berfungsi.

* berarti kecocokan 0 atau lebih dari kejadian sebelumnya, yang merupakan digit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.