我对下面的代码有点困惑:
public class RegularEx {
public static void main(String... arg) {
Pattern pattern = Pattern.compile("M+", 5);
Matcher matcher = pattern.matcher("M Merit Match MM m mM");
while (matcher.find())
System.out.print(matcher.group() + " ");
}
}在本部分中,Pattern.compile("M+", 5);
根据https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#compile-java.lang.String-int-的说法,数字应该表示标志,这些标志可能包括CASE_INSENSITIVE、MULTILINE、DOTALL、UNICODE_CASE、CANON_EQ、UNIX_LINES、文字、UNICODE_CHARACTER_CLASS和注释
数量,5应该代表什么?
来源:https://java.meritcampus.com/core-java-questions/Regular-Expression?t=195
发布于 2021-10-06 11:44:15
5是1 (UNIX_LINES)和4(注释)的组合,可以在here中找到常量的完整列表。
java.util.regex.Pattern
Modifier and Type Constant Field Value
public static final int CANON_EQ 128
public static final int CASE_INSENSITIVE 2
public static final int COMMENTS 4
public static final int DOTALL 32
public static final int LITERAL 16
public static final int MULTILINE 8
public static final int UNICODE_CASE 64
public static final int UNICODE_CHARACTER_CLASS 256
public static final int UNIX_LINES 1永远不要指定这样的标志,而应该这样做
Pattern pattern = Pattern.compile("M+", UNIX_LINES | COMMENTS);https://stackoverflow.com/questions/69464995
复制相似问题