首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是模式编译(字符串正则表达式,int标志)标志?

什么是模式编译(字符串正则表达式,int标志)标志?
EN

Stack Overflow用户
提问于 2021-10-06 11:37:32
回答 1查看 127关注 0票数 0

我对下面的代码有点困惑:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 11:44:15

5是1 (UNIX_LINES)和4(注释)的组合,可以在here中找到常量的完整列表。

代码语言:javascript
复制
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

永远不要指定这样的标志,而应该这样做

代码语言:javascript
复制
Pattern pattern = Pattern.compile("M+", UNIX_LINES | COMMENTS);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69464995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档