Regex 用于从文本文件中过滤罗马数字的单个正则表达式
我陷入了一个只允许一次正则表达式的问题(一些旧的硬代码)之间。我需要罗马数字的正则表达式 我尝试了标准的方法,即Regex 用于从文本文件中过滤罗马数字的单个正则表达式,regex,roman-numerals,Regex,Roman Numerals,我陷入了一个只允许一次正则表达式的问题(一些旧的硬代码)之间。我需要罗马数字的正则表达式 我尝试了标准的方法,即^(?I)M*(D?C{0,3}C[DM])(L?X{0,3}X[LC])(V?I{0,3}I[VX])$,但问题是它也允许空(')值 有没有办法检查一下这个问题 若要要求至少存在一个字符,可以在正则表达式的开头使用(?=): ^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$ 另一个解决方案是单独测试字符串是否
^(?I)M*(D?C{0,3}C[DM])(L?X{0,3}X[LC])(V?I{0,3}I[VX])$
,但问题是它也允许空('
)值
有没有办法检查一下这个问题 若要要求至少存在一个字符,可以在正则表达式的开头使用
(?=)
:
^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$
另一个解决方案是单独测试字符串是否为空字符串。我喜欢这个:
\b(?=[MDCLXVI]+\b)M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b