Java Regex 中的元字符

javaobject oriented programmingprogramming更新于 2024/11/8 15:40:17

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

Java Regex 在 java.util.regex 包中提供了三个类和一个接口,即 MatchResult 接口、Matcher 类、Pattern 类、PatternSyntaxException 类。Java 正则表达式功能通过匹配器和模式类提供。

Java Regex 中的元字符

Java Regex 中的元字符用作常见匹配模式的短代码。元字符前面带有反斜杠 (\)。所有元字符列示如下:

REGEX

DESCRIPTION

.

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

\d

任意数字,[0-9] 的缩写

\D

任意非数字,[0-9] 的缩写[^0-9]

\s

任何空格字符,缩写为 [\t\n\x0B\f\r]

\S

任何非空格字符,缩写为 [^\s]

\w

任何单词字符,缩写为 [a-zA-Z_0-9]

\W

任何非单词字符,缩写为[^\w]

\b

单词边界

\B

非单词边界

元字符示例

// Java 程序演示 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 程序演示与数字和非数字相关的元字符

import java.io.*;
import java.util.regex.*;
public class example {
   Public static void main(String[] args) {
        // \d 代表数字
        // 代表数值,因此返回 true
        System.out.println(Pattern.matches("\d", "2")); // true
        
        // 将数值与字符进行比较,因此返回 false
        System.out.println(Pattern.matches("\D", "a")); // false
        
        // \D 代表非数字
        // 将非数字与字符进行比较,因此返回
        // true
        System.out.println(Pattern.matches("\D", "a")); // true
        
        // 将非数字与数字进行比较,因此返回
        // 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 程序演示空白和非空白元字符
import java.io.*;
import java.util.regex.*;
Class example {
   public static void main(String[] args) {
        // 将任何空白字符与一个空格进行比较,否则返回 false
        System.out.println(Pattern.matches("\s", " ")); // true
        System.out.println(Pattern.matches("\s", "2")); // false
        
        // 将任何非空白字符与一个非空白字符进行比较,否则返回 true
        System.out.println(Pattern.matches("\S", "2")); // true
        System.out.println(Pattern.matches("\S", " ")); // false
   }
}

Output

true 
false
true
false

解释

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

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

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

示例

// Java 程序演示单词和非单词元字符
import java.io.*;
import java.util.regex.*;
public class example {
   public static void main(String[] args){
        // 将任何单词字符与单词进行比较
        // 字符,因此返回 true,否则返回 false
        System.out.println(Pattern.matches("\w", "a")); // true
        System.out.println(Pattern.matches("\w", "2")); // true
        System.out.println(Pattern.matches("\w", "$")); // false
        
        // 将任何非单词字符与特殊
        // 符号和空格进行比较,返回 true,否则返回 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 程序演示单词和非单词边界元字符
import java.io.*;
import java.util.regex.*;
class example {
   public static void main(String[] args) {
        // \b 表示字符串必须有单词字符的边界字母
        //
        System.out.println(Pattern.matches("\bexample\b", "example")); // true
        System.out.println(Pattern.matches("\b@example\b", "@example")); // false
        
        // \B 表示字符串必须有非单词字符作为边界
        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 Regex 类位于 java.util.regex 包中。在使用 Java Regex 的任何方法之前都需要导入它。Java Regex 包含三个类和一个接口,即 pattern、matcher、PatternSyntaxException 和 MatchResult 接口。


相关文章


有用资源