【发布时间】:2016-11-15 14:44:32
【问题描述】:
我收到如下用户输入。
“ix 和 viii 都是罗马数字。 mcmlxxxvii 是哇的一年。 年份是 mmxvi。”
我必须搜索 i/p 中存在的所有罗马数字并将其转换为大写。所以我想使用字符串替换,如下所示,其中 xxx 是罗马数字。
input.replaceAll("(?i)xxx","XXX");
目前,我可以检查输入是否有。
System.out.println(input.matches("^.*M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}).*$"));
帮帮我。
【问题讨论】:
-
如果你想匹配部分文本,不要使用锚点(
^和$) -
replaceAll没用,搜索appendReplacement。 -
@WiktorStribiżew 谢谢,但这需要适当的正则表达式。
-
不可能使用 1 个正则表达式,您需要尽可能多地使用它们。这不是继续的方法,祝你好运。
标签: java regex roman-numerals mvel