这两天楼主处理一个需求 要在很多字符串里面匹配出字符串中的罗马数字 还要取出这些罗马数字进行一系列的操作.在度娘上找了半天也没找到有用信息 还被很多错误的代码误导了 非常痛苦.好在最后各种努力 花了半天时间达到了想要的结果.现在在这里记录并分享一下.如果需要转载 请注明出处 写好传送门.thanks
这里分享一个网站 可以把阿拉伯数字转化为对应的罗马数字 没有上限 好用点赞加分享
http://www.zhongguosou.com/education_graduate_course_tools/roman_numeral_convert.aspx
以下方法就可以取到字符串中的罗马数字,但是也会匹配上空字符串,所以需要后期程序处理
/**
* 已经测试成功的取出正则表达式匹配的字符串
* @author erikas
* @throws Exception
*/
@org.junit.Test
public void testReg() throws Exception {
String str = "";
//匹配罗马数字的正则,但是由于每一个都可能是0个 空字符串也会被匹配出来 需要后期在程序里再处理
String regex = "(-| +|^)M{0,9}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})( +|$)";
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(str);
List&