繁体   English   中英

需要更新我的正则表达式模式以匹配罗马数字

[英]Need to update my regex pattern to match roman numerals

我正在使用以下模式: [ ]\\bM{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\\b匹配字符串中的所有罗马数字。 以下是一些我需要的示例:

string1 VI STRING4 I STRING5 1340 I 2 STRING6 III STRING7 V STRING11 STRING12 VI STRING13! IX STRING14 VI . STRING15 - STRING16_ V STRING17 1/2 VI STRING18 VIII XIII (2011) V (2012) String19 VP XII

将导致:

string1 STRING4 STRING5 1340 2 STRING6 STRING7 STRING11 STRING12 STRING13! STRING14 . STRING15 - STRING16_ STRING17 1/2 STRING18 XIII (2011) V (2012) String19 VP XII

现在的问题是我有以下字符串: WORD1 DI WORD2和上面的模式匹配DI 但是我希望保留它: WORD1 DI WORD2 ,所以我只想在字符串的末尾匹配罗马数字(除非只有一个像XII单词)。

所以我仍然想保留上面的结果,但是我需要添加一条规则来获得此结果:

WORD1 DI WORD2 > WORD1 DI WORD2

有什么帮助吗?

谢谢

这就是我要使用的:

$result = preg_replace("/\s(I|V|X|L|M|D|C)+$/gm", "", $str);

这为您的示例提供了预期的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM