Skip to content

Latest commit

 

History

History
115 lines (82 loc) · 4.93 KB

File metadata and controls

115 lines (82 loc) · 4.93 KB

第17节 Java正则表达式

❤️💕💕java的学习指南,从入门到大师篇章。Myblog:http://nsddd.top


[TOC]

什么是正则表达式?

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

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

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

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()方法的第一个参数是模式。它描述了正在搜索的内容。

括号用于查找一系列字符:

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

END 链接