我使用此模式:[ ]\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
请帮忙吗?
由于
答案 0 :(得分:0)
这就是我要用的:
$result = preg_replace("/\s(I|V|X|L|M|D|C)+$/gm", "", $str);
这为您的示例提供了预期的结果。