Java正则表达式查找子字符串

时间:2016-08-19 14:03:19

标签: java regex

我正在编写一个将罗马数字转换为整数的程序。我正在做的方法是寻找一个子字符串,它表示减法(IXCMXC)并将相应的数量加到计数器上。例如,如果CM位于字符串MMMMCMXCIX中,则将数百列设置为9

我正在尝试用

    if(romanNum.matches("CM")){
        hundreds = 9;
        romanNum.replaceAll("CM", "");
    }

但它永远不会进入if语句。将these two正则表达式检查器与字符串MMMMCMXCIX和正则表达式仅用作CM,它们都突出显示匹配,但我的代码建议不然。这是为什么?

1 个答案:

答案 0 :(得分:0)

String#matches会针对您的子字符串匹配整个String,这就是为什么您的条件永远不会触发,除非您的String值仅包含在"CM"中。

要么:

  1. 使用String#contains(没有正则表达式):

    e.g。 if(romanNum.contains("CM"))

  2. 或明确对Matcher使用Pattern

    e.g。 if (Pattern.compile("CM").matcher(romanNum).find())

    请注意,除非您有实际模式,否则这样做并不合适(首选解决方案1)。

  3. 最后,如果您只是替换文字,则可能需要使用replace而不是replaceAll