আপনি এটির জন্য নিম্নোক্ত রেজেক্স ব্যবহার করতে পারেন:
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
কিন্তু ভেঙে, M{0,4}
হাজার হাজার অধ্যায় নির্দিষ্ট করে এবং মূলত মধ্যে এটি বিরত রাখে 0
এবং 4000
। এটি তুলনামূলকভাবে সহজ:
0: <empty> matched by M{0}
1000: M matched by M{1}
2000: MM matched by M{2}
3000: MMM matched by M{3}
4000: MMMM matched by M{4}
আপনি যদি অবশ্যই বড় সংখ্যার অনুমতি দিতে চান তবে আপনি অবশ্যই কয়েক হাজার (শূন্য সহ) যে কোনও সংখ্যাকে M*
অনুমতি দেওয়ার মতো কিছু ব্যবহার করতে পারেন ।
এরপরে (CM|CD|D?C{0,3})
সামান্য জটিল, এটি কয়েকশো বিভাগের জন্য এবং সমস্ত সম্ভাবনাগুলি কভার করে:
0: <empty> matched by D?C{0} (with D not there)
100: C matched by D?C{1} (with D not there)
200: CC matched by D?C{2} (with D not there)
300: CCC matched by D?C{3} (with D not there)
400: CD matched by CD
500: D matched by D?C{0} (with D there)
600: DC matched by D?C{1} (with D there)
700: DCC matched by D?C{2} (with D there)
800: DCCC matched by D?C{3} (with D there)
900: CM matched by CM
তৃতীয়ত, (XC|XL|L?X{0,3})
পূর্ববর্তী বিভাগের মতো একই নিয়ম অনুসরণ করে তবে দশকের জায়গার জন্য:
0: <empty> matched by L?X{0} (with L not there)
10: X matched by L?X{1} (with L not there)
20: XX matched by L?X{2} (with L not there)
30: XXX matched by L?X{3} (with L not there)
40: XL matched by XL
50: L matched by L?X{0} (with L there)
60: LX matched by L?X{1} (with L there)
70: LXX matched by L?X{2} (with L there)
80: LXXX matched by L?X{3} (with L there)
90: XC matched by XC
এবং, অবশেষে, (IX|IV|V?I{0,3})
ইউনিট অধ্যায়, হ্যান্ডলিং হয় 0
মাধ্যমে9
পূর্ববর্তী দুটি বিভাগের সাথে এবং এটিও একইরকম (রোমান সংখ্যাগুলি, তাদের অদ্ভুততা সত্ত্বেও, কিছুগুলি যৌক্তিক নিয়মগুলি অনুসরণ করুন একবার যখন আপনি এটি বুঝতে পারেন):
0: <empty> matched by V?I{0} (with V not there)
1: I matched by V?I{1} (with V not there)
2: II matched by V?I{2} (with V not there)
3: III matched by V?I{3} (with V not there)
4: IV matched by IV
5: V matched by V?I{0} (with V there)
6: VI matched by V?I{1} (with V there)
7: VII matched by V?I{2} (with V there)
8: VIII matched by V?I{3} (with V there)
9: IX matched by IX
কেবল মনে রাখবেন যে সেই রেজেক্সটি খালি স্ট্রিংয়ের সাথেও মিলবে। আপনি যদি এটি না চান (এবং আপনার রেজেক্স ইঞ্জিনটি যথেষ্ট আধুনিক), আপনি ইতিবাচক চেহারা-পিছন এবং সামনের দিকে ব্যবহার করতে পারেন:
(?<=^)M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(?=$)
(অন্য বিকল্পটি দৈর্ঘ্যের আগে শূন্য নয় কিনা তা পরীক্ষা করে দেখার জন্য)।