Java正则表达式中的元字符


正则表达式 (Regex) 指的是正则表达式。可以使用正则表达式作为 API 来定义模式以搜索或修改文本。它经常用于指定字符串约束,包括密码和电子邮件验证。了解此术语后,您可以使用正则表达式来评估您的正则表达式。

Java 正则表达式在 java.util.regex 包中提供了三个类和一个接口,分别是 MatchResult 接口、Matcher 类、Pattern 类和 PatternSyntaxException 类。Java 正则表达式功能是通过 matcher 和 pattern 类提供的。

Java正则表达式中的元字符

Java正则表达式中的元字符作为常用匹配模式的简写代码。元字符前面带有反斜杠 (\)。下面列出了所有元字符

正则表达式

描述

.

任何字符(可能匹配也可能不匹配终止符)

\d

任何数字,[0-9] 的简写

\D

任何非数字,[^0-9] 的简写

\s

任何空白字符,[\t\n\x0B\f\r] 的简写

\S

任何非空白字符,[^\s] 的简写

\w

任何单词字符,[a-zA-Z_0-9] 的简写

\W

任何非单词字符,[^\w] 的简写

\b

单词边界

\B

非单词边界

元字符示例

// Java program to demonstrate all the meta characters in Java Regex
import java.io.*;
import java.util.regex.*;
public class example {
   public static void main(String[] args) {
      // \d- Number
      // \D- Non-Digit
      // \s- Any whitespace
      // \S- Non whitespace Character
      // \w- Any word character like numbers/ characters
      // \W- Special symbols
      System.out.println(Pattern.matches(
         "\d\D\s\S\w\W", "1G FG!"));    // true
      System.out.println(Pattern.matches(
         "\d\D\s\S\w\W", "Hello"));     // false
   }
}

输出

true
false

元字符解释

数字和非数字元字符 (\d, \D)

示例

// Java program to demonstrate the Digit and Non-Digit related Meta Characters

import java.io.*;
import java.util.regex.*;
public class example {
   Public static void main(String[] args) {
      // \d represents a digit
      // represents a number so return true
      System.out.println(Pattern.matches("\d", "2"));  // true

      // Comparing a number with character so return false
      System.out.println(Pattern.matches("\D", "a"));   // false

      // \D represents non digits
      // Comparing a non-digit with character so return
      // true
      System.out.println(Pattern.matches("\D", "a"));  // true

      // Comparing a non-digit with a digit so return
      // false
      System.out.println(Pattern.matches("\D", "2"));  // false

   }
}

输出

true
false
true
false

解释

d 元字符表示 0 到 9 的数字。因此,当我们在范围内比较 "d" 时,它返回 true。否则返回 false。

D 元字符表示非数字,它接受除数字之外的任何字符。因此,当我们将 "D" 与任何数字进行比较时,它返回 false。否则返回 true。

空白和非空白元字符 (\s, \S)

示例

// Java program to demonstrate the Whitespace and Non whitespace Meta Characters
import java.io.*;
import java.util.regex.*;
Class example {
   public static void main(String[] args) {
      // comparing any whitespace character with a white
      // space so return else false
      System.out.println(Pattern.matches("\s", " "));   // true
      System.out.println(Pattern.matches("\s", "2"));   // false
 
      // comparing any non-whitespace character with a non
      // white space character so return true else false
      System.out.println(Pattern.matches("\S", "2"));   // true
      System.out.println(Pattern.matches("\S", " "));   // false
   }
}

输出

true 
false
true
false

解释

s 代表空格字符,例如空格、制表符、换行符等。因此,当我们将 "s" 与空格字符进行比较时,它将返回 true。否则返回 false

S 代表非空白字符,它接受除空白字符之外的所有字符,因此当我们将 "S" 与空格字符进行比较时,它将返回 false。否则返回 true。

单词和非单词元字符 (\w, \W)

示例

// Java program to demonstrate the Word and Non-Word Meta Characters
import java.io.*;
import java.util.regex.*;
public class example {
   public static void main(String[] args){
      // comparing any word character with a word
      // character so return true else false
      System.out.println(Pattern.matches("\w", "a"));  // true
      System.out.println(Pattern.matches("\w", "2"));  // true
      System.out.println(Pattern.matches("\w", "$"));  // false

      // comparing any non-word character with special
      // symbols and whitespaces return true else false
      System.out.println(Pattern.matches("\W", "2"));  // false
      System.out.println(Pattern.matches("\W", " "));  // true
      System.out.println(Pattern.matches("\W", "$"));  // true
   }
}

输出

true
true
false
false
true
true

解释

w 代表单词字符,它接受字母(大写和小写)和数字 [0-9]。因此,当我们将 "w" 与字母或数字进行比较时,它返回 true。否则返回 false。

W 代表非单词字符,它接受除字母和数字之外的任何字符。因此,当我们将 "W" 与字母或数字进行比较时,它返回 false。否则返回 true。

单词和非单词元字符 (\b, \B)

示例

// Java program to demonstrate the Word and Non Word boundary Meta Characters
import java.io.*;
import java.util.regex.*;
class example {
   public static void main(String[] args) {
      // \b says that a string must have boundary letters
      // of word characters
      System.out.println(Pattern.matches("\bexample\b", "example")); // true
      System.out.println(Pattern.matches("\b@example\b", "@example")); // false
  
      // \B says that a string must have non- word characters as boundaries
      System.out.println(Pattern.matches("\B@example@\B", "@example@")); //true
      System.out.println(Pattern.matches("\Bexample\B", "example"));  //false

   }
}

输出

true
false
true
false

解释

根据符号 b,字符串必须具有单词字符(例如数字或字母)的边界元素。由于在这种情况下,GFG 字符串包含作为单词字符的边界 (G, G),因此它返回 true。@GFG 字符串的边界元素是 @、G,其中 @ 不是单词字符,因此返回 false。

B 表示字符串的边界元素必须是非单词字符;允许任何非数字或字母的内容。由于 @GFG@ 字符串的边界是 @、@ 非单词字符,因此它返回 true。GFG 字符串的边界元素是 G 和 G,它们是单词字符,因此返回 false。

结论

对于寻求检测或操作文本信息的程序员来说,正则表达式(通常称为正则表达式)提供了一种有效的解决方案。通过在字符串中定义模式,开发人员可以轻松找到所需内容,甚至可以修改其外观。Java 正则表达式类位于 java.util.regex 包中。在使用任何 Java 正则表达式方法之前,需要导入它。Java 正则表达式包含三个类和一个接口,分别是 pattern、matcher、PatternSyntaxException 和 MatchResult 接口。

更新于:2023年8月1日

692 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告