Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于从文本文件中过滤罗马数字的单个正则表达式_Regex_Roman Numerals - Fatal编程技术网

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