# Validating Roman Numerals Using Regular expression

• Last Updated : 08 Sep, 2021

Given a String, and You have to validate whether the given String is Valid Roman Numeral or not. If it is valid print True else False.
Note: Numerals are lying between 1 to 3999.
Examples:

```Input: String = IX
Output: True

Input: String = 54IVC
Output: False```

Hey! Looking for some great resources suitable for young ones? You've come to the right place. Check out our self-paced courses designed for students of grades I-XII

Start with topics like Python, HTML, ML, and learn to make some games and apps all with the help of our expertly designed content! So students worry no more, because GeeksforGeeks School is now here!

Roman numerals are based on below symbols.

```SYMBOL       VALUE
I             1
IV            4
V             5
IX            9
X             10
XL            40
L             50
XC            90
C             100
CD            400
D             500
CM            900
M             1000       ```

A number in Roman Numerals is a string of these symbols written in descending order(e.g. M’s first, followed by D’s, etc.). However, in a few specific cases, to avoid four characters being repeated in succession (such as IIII or XXXX), subtractive notation is often used as follows:

• I placed before V or X indicates one less, so four is IV (one less than 5) and 9 is IX (one less than 10).
• X placed before L or C indicates ten less, so forty is XL (10 less than 50) and 90 is XC (ten less than a hundred).
• C placed before D or M indicates a hundred less, so four hundred is CD (a hundred less than five hundred) and nine hundred is CM (a hundred less than a thousand).

Approach:

• The Regular Expression to check if a string is Valid Roman Numeral or not is this:
` ^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\$`
• In which,
1. M{0,3} specifies the thousands section and basically restrains it to between 0 and 4000

2. (CM|CD|D?C{0,3}) is for the hundreds section.

3. (XC|XL|L?X{0,3}) is for the tens place.

4. Finally, (IX|IV|V?I{0,3}) is the units section.

• Import regular expression and search the input string in the expression if the string exists return True else return False

Below is the implementation of the above approach.

## Python3

 `# Python3 program to Validate the Roman numeral` `# Function to Validate the Roman numeral``def` `ValidationOfRomanNumerals(string):``    ` `    ``# Importing regular expression``    ``import` `re``    ` `    ``# Searching the input string in expression and``    ``# returning the boolean value``    ``print``(``bool``(re.search(r``"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\$"``,string)))` `# Driver code` `# Given string``string``=``"XI"` `# Function call``ValidationOfRomanNumerals(string)`
Output:
`True`

My Personal Notes arrow_drop_up