Java如何编写嵌入式标志表达式?

也可以使用嵌入式标志表达式来启用各种标志。嵌入式标志表达式是双参数版本的compile的替代方法,并且在正则表达式本身中指定。下面的示例是使用(?i)标志表达式来启用不区分大小写的匹配。

下面列出了另一个标志表达式:

  • (?x),相当于 Pattern.COMMENTS

  • (?m),相当于 Pattern.MULTILINE

  • (?s),相当于 Pattern.DOTTAL

  • (?u),相当于 Pattern.UNICODE_CASE

  • (?d),相当于 Pattern.UNIX_LINES

package org.nhooo.example.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmbeddedFlagDemo {
    public static void main(String[] args) {
        // 定义以(?i)开头的正则表达式
        // 不区分大小写的匹配
        String regex = "(?i)the";
        String text = "The quick brown fox jumps over the lazy dog";

        // 获取所需的匹配器
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        // 查找每个匹配并打印
        while (matcher.find()) {
            System.out.format("Text \"%s\" found at %d to %d.%n",
                matcher.group(), matcher.start(),
                matcher.end());
        }
    }
}

该程序的结果是:

Text "The" found at 0 to 3.
Text "the" found at 31 to 34.