写点什么

Java 正则表达式语法大全

作者:编程江湖
  • 2022 年 1 月 18 日
  • 本文字数:1136 字

    阅读完需:约 4 分钟

在我们日常开发项目中经常用到正则表达式/比如邮箱/电话手机号/域名/ip 等)都会经常用到其实一个字符串就是一个简单的正则表达式,例如 **Hello World** 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。

下表列出了一些正则表达式的实例及描述:

java 正则表达式和 Perl 的是最为相似的。

java.util.regex 包主要包括以下三个类:

Pattern 类:

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher 类:

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与 Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

PatternSyntaxException:

PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。前端培训以下实例中使用了正则表达式  .runoob.  用于查找字符串中是否包了 runoob 子串:

import java.util.regex.*;class RegexExample1{public static void main(String[] args){  String content = "I am noob " + "from runoob.com.";   String pattern = ".*runoob.*";   boolean isMatch = Pattern.matches(pattern, content);  System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);  } }
复制代码

最终打印字符串中是否包含了 'runoob' 子字符串? true

正则表达式语法大全

在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。

在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。所以,在其他的语言中(如 Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \d,而表示一个普通的反斜杠是 \。

System.out.print("\");    // 输出为 \System.out.print("\\");  // 输出为 \
复制代码



注意:根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 "\b" 与单个退格字符匹配,而 "\b" 与单词边界匹配。字符串字面值 "(hello)" 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 "\(hello\)"。

用户头像

编程江湖

关注

IT技术分享 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
Java正则表达式语法大全