最适合网络开发者的网站
Java 编程语言。初学者课程

尿素

Java 常用表达


什么是正则表达式?

正则表达式是构成搜索模式的字符序列。当您在文本中搜索数据时,可以使用此搜索模式来描述您要搜索的内容。

正则表达式可以是单个字符,也可以是更复杂的模式。

正则表达式可用于执行所有类型的 文本搜索文本替换 运营。

Java 没有内置的正则表达式类,但我们可以导入 java.util.regex 使用正则表达式的包。该包包含以下类:

  • Pattern 类 - 定义一个模式(用于搜索)
  • Matcher 类别 - 用于搜索模式
  • PatternSyntaxException 类 - 表示正则表达式模式中的语法错误

例子

查明句子中是否出现单词“w3schools”:

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

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found
亲自尝试 »

示例解释

在此示例中,句子中搜索的是单词“w3schools”。

首先,使用 Pattern.compile() 方法。第一个参数表示要搜索哪种模式,第二个参数有一个标志,表示搜索不区分大小写。第二个参数是可选的。

matcher() 方法用于在字符串中搜索模式。它返回一个 Matcher 对象,其中包含有关已执行搜索的信息。

find() 如果在字符串中找到模式,则方法返回 true,如果未找到,则返回 false。


标志

旗帜 compile() 方法可以改变搜索的执行方式。以下是其中一些方法:

  • Pattern.CASE_INSENSITIVE - 进行搜索时将忽略字母的大小写。
  • Pattern.LITERAL - 模式中的特殊字符没有任何特殊含义,在执行搜索时将被视为普通字符。
  • Pattern.UNICODE_CASE - 与一起使用CASE_INSENSITIVE 标记以忽略英文字母表之外的字母的大小写

正则表达式模式

第一个参数 Pattern.compile() 方法是模式。它描述了正在搜索的内容。

括号用于查找字符范围:

表达 描述
[英文] 从括号内的选项中查找一个字符
[^abc] 查找一个不在括号内的字符
[0-9] 从 0 到 9 范围内查找一个字符

元字符

元字符是具有特殊含义的字符:

元字符 描述
| 查找由 | 分隔的任意一个模式的匹配项,例如:cat|dog|fish
. 仅查找任意字符的一个实例
^ 查找与字符串开头匹配的内容,例如:^Hello
$ 在字符串末尾查找匹配项,例如:World$
\d 查找数字
\s 查找空白字符
\b 在单词开头查找匹配项,如下所示:\bWORD,或在单词结尾查找匹配项,如下所示:WORD\b
\uxxxx 查找十六进制数 xxxx 指定的 Unicode 字符

量词

量词定义数量:

量词 描述
n+ 匹配至少包含一个 n
n* 匹配包含零次或多次出现的任意字符串 n
否? 匹配包含零次或一次出现的任意字符串 n
n{x} 匹配包含以下序列的任何字符串 X n
n{x,y} 匹配任何包含 X 到 Y 序列的字符串 n
n{x,} 匹配任何包含至少 X 个序列的字符串 n

什么是量词?

量词 是逻辑中用来表示满足特定条件的元素数量的符号。量词有两种类型:全称量词(表示“所有”)和存在量词(表示“存在”)。在数学和逻辑中,量词是形式化推理过程和解决与集合中元素数量有关的问题的重要工具。