📌  相关文章
📜  使用正则表达式验证罗马数字

📅  最后修改于: 2021-05-04 17:56:30             🧑  作者: Mango

给定一个String ,并且您必须验证给定的String是否为有效的罗马数字。如果有效,则打印True,否则打印False。

注意:数字介于1到3999之间。

例子:

Input: String = IX  
Output: True 

Input: String = 54IVC 
Output: False

罗马数字基于以下符号。

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       

罗马数字中的数字是这些符号的字符串,按降序排列(例如,M的第一个,然后是D的等等)。但是,在某些特定情况下,为避免连续重复四个字符(例如IIII或XXXX),减法表示法通常如下使用:

  • VX之前表示少一,所以四个是IV (小于5的一个),而9是IX(小于10的一个)。
  • LC前面的X表示少十,因此XL为四十(小于50十), XC为90(十小于一百)。
  • DM前面的C表示少100,因此CD等于400(小于500),而CM等于900(小于1000)。

方法:

  • 检查字符串是否为有效罗马数字的正则表达式是这样的:
    ^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
    

    其中,

    1. M {0,4}指定了数千个部分,并且基本上将其限制在0到4000之间
    2. (CM | CD | D?C {0,3})用于数百个部分。
    3. (XC | XL | L?X {0,3})用于十位。
    4. 最后, (IX | IV | V?I {0,3})是单位部分。
  • 导入正则表达式并在表达式中搜索输入字符串(如果字符串存在)返回True,否则返回False

下面是上述方法的实现。

# Python3 program to Validate the Roman numeral
  
# Function to Validate the Roman numeral
def ValidationOfRomanNumerals(string):
      
    # Importing regular expression
    import re
      
    # Serching 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)
输出:
True