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 接口。