目录

JAVA 正则表达式


什么是正则表达式?

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

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

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

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

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

示例

查明句子中是否出现单词"91xjr":

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

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

亲自试一试 »

示例解释

在此示例中,正在句子中搜索单词"91xjr"。

首先,使用以下命令创建图案Pattern.compile()方法。第一个参数指示正在搜索哪个模式,第二个参数有一个标志来指示搜索应不区分大小写。第二个参数是可选的。

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

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



旗帜

标志在compile()方法更改搜索的执行方式。这里有几个:

  • Pattern.CASE_INSENSITIVE- 执行搜索时将忽略字母的大小写。
  • Pattern.LITERAL- 模式中的特殊字符不会有任何特殊含义,在执行搜索时将被视为普通字符。
  • Pattern.UNICODE_CASE- 与CASE_INSENSITIVE标志也忽略英语字母表之外的字母的大小写

正则表达式模式

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

括号用于查找字符范围:

Expression Description
[abc] Find one character from the options between the brackets
[^abc] Find one character NOT between the brackets
[0-9] Find one character from the range 0 to 9

元字符

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

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

量词

量词定义数量:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's