Java 模式不会在正则表达式字符串本身内应用修饰符或上下文。使用".*/([0-9]+,)+/g.*",看起来您正在尝试使用该g模式在全局范围内应用表达式。如果你想应用修饰符,那么你应该将它们作为第二个参数添加到Pattern.compile:Pattern.compile(".*([0-9]+,).*", Pattern.DOTALL)在您的情况下,您可能不需要模式修饰符。只需.*([0-9]+,).*用作您的正则表达式:if (mString.matches(".*([0-9]+,).*")) { // Found it!}更新:我最初认为内联修饰符在 Java 中不可用,但事实证明它java.util.Pattern确实支持内联修饰符。这在类中的第一个 Javadoc 样式注释中进行了记录Pattern: /** * Regular expression modifier values. Instead of being passed as * arguments, they can also be passed as inline modifiers. * For example, the following statements have the same effect. * <pre> * RegExp r1 = RegExp.compile("abc", Pattern.I|Pattern.M); * RegExp r2 = RegExp.compile("(?im)abc", 0); * </pre> * * The flags are duplicated so that the familiar Perl match flag * names are available. */可以在同一类中的每个修饰符常量中找到有关每个修饰符使用什么字符的更多详细信息。例如,Pattern.DOTALL可以使用表达式启用(?s)。