Java 正则表达式中的元字符

Java 正则表达式中的元字符

正则表达式代表着Regular Expression。可以使用正则表达式作为API来定义模式以搜索或修改文本。它经常用于指定字符串约束,包括密码和电子邮件验证。一旦你理解了这个术语,就可以使用正则表达式来评估你的正则表达式。

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

Java正则表达式中的元字符

Java正则表达式中的元字符作为常见匹配模式的简码。元字符前面要加反斜杠(\)。以下列出了所有的元字符:

REGEX 描述
. 任何字符(可以匹配终止符,也可以不匹配)
\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的数字。因此,当我们在这个范围内进行比较时,它返回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。

结论

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程