举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java正则表达式模式有哪些 Java 正则表达式模式

java正则表达式模式有哪些 Java 正则表达式模式

2023-05-06 17:31 Java教程

java正则表达式模式有哪些 Java 正则表达式模式

java正则表达式模式有哪些

Java正则表达式模式是一种用于搜索、替换和操作字符串的强大工具。它可以帮助我们快速地执行复杂的文本处理任务,而不需要写大量的代码。

Java正则表达式模式包含了一些特定的字符,这些字符可以用来表达一个或多个字符的搜索模式。这些特定字符包括:

.  匹配除“\n”之外的任何单个字符
*  匹配前面的子表达式零次或多次
+  匹配前面的子表达式一次或多次
?  匹配前面的子表达式零次或一次(最多一次)
[...]  字符集合。匹配所包含的任意一个字符
[^...]  非字符集合。匹配未包含的任意字符
\s  匹配任何不可见字符,相当于 [\t\n\f\r]
\S  匹配任何可见字符,相当于 [^ \t\n\f\r]
\d  数字:[0-9] 等效于 [0123456789]
\D  非数字:[^0-9] 等效于 [^0123456789]

Java 正则表达式模式

Java正则表达式教程 - Java正则表达式模式


java.util.regex 包含三个类,以支持正则表达式的完整版本。

  • 模式
  • 匹配
  • PatternSyntaxException

Pattern 保存正则表达式的编译形式。

Matcher 将要匹配的字符串与模式相关联,并执行实际匹配。

PatternSyntaxException 表示格式错误的正则表达式中的错误。


编译正则表达式

没有公共构造函数的模式是不可变的,可以共享。

Pattern 类包含一个静态compile()方法,它返回一个 Pattern 对象。

compile()方法是重载的。

static Pattern  compile(String regex)
static Pattern compile(String regex, int flags)

以下代码将正则表达式编译为Pattern对象:

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    // Prepare a regular expression
    String regex = "[a-z]@.";

    // Compile the regular expression into a Pattern object
    Pattern p = Pattern.compile(regex);
  }
}

compile()方法的第二个版本设置修改模式匹配方式的标志。

flags参数是一个位掩码,并在Pattern类中定义为int常量。

Flag描述
Pattern.CANON_EQ启用规范等效。
Pattern.CASE_INSENSITIVE启用不区分大小写的匹配。
Pattern.COMMENTS启用不区分大小写的匹配。...
Pattern.DOTALL允许在模式中的空格和注释。
忽略以#开头的空格和嵌入的注释,直到行的结尾。
Pattern.LITERAL启用模式的文字解析。 这个标志使元字符和转义序列作为正常字符。
Pattern.MULTILINE启用多行模式。 默认情况下,^和$匹配输入序列的开始和结束。 此标志使模式仅逐行匹配或输入序列的末尾。
Pattern.UNICODE_CASE启用支持Unicode的大小写。 与CASE_INSENSITIVE标志一起,可以根据Unicode标准执行不区分大小写的匹配。
Pattern.UNICODE_ CHARACTER_CLASS启用预定义字符类和POSIX字符类的Unicode版本。 设置此标志时,预定义字符类和POSIX字符类符合Unicode技术标准。
Pattern.UNIX_LINES启用Unix行模式。 设置此标志时,只有 n字符被识别为行终止符。

例子

以下代码编译设置CASE_INSENSTIVE和DOTALL标志的正则表达式。

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    String regex   = "[a-z]@.";
    Pattern p  = Pattern.compile(regex,  Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
  }
}

例2

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

public class Main {
  public static void main(String args[]) {
    Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);

    String candidateString = "Java. java JAVA jAVA";

    Matcher matcher = p.matcher(candidateString);

    // display the latter match
    System.out.println(candidateString);
    matcher.find(11);
    System.out.println(matcher.group());

    // display the earlier match
    System.out.println(candidateString);
    matcher.find(0);
    System.out.println(matcher.group());
  }
}

上面的代码生成以下结果。

阅读全文
以上是鳄鱼CMS为你收集整理的java正则表达式模式有哪些 Java 正则表达式模式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们