Java正则表达式使用
在Java语言中,正则表达式(Regex或Regular Expression)是用于操作、搜索和编辑字符串的应用程序编程接口(API)。您可以通过在代码中导入java.util.regex API包来在Java中使用正则表达式。
java.util.regex包下有以下三个类:
- regex.Pattern:这个类有助于定义模式。
- regex.Matcher:这个类有助于使用模式在输入字符串上执行匹配操作。
- PatternSyntaxException:这个类通过指示正则表达式模式中的语法错误来帮助用户。
util.regex.Pattern类 这个类(util.regex.Pattern)是正则表达式的编译版本,可以通过compile()方法调用。compile()方法接受正则表达式作为第一个参数。这个类不提供任何公共构造函数。
Pattern类
Pattern类中有各种不同的函数,用于处理正则表达式。
方法名 | 描述 |
---|---|
static Pattern compile(String regex) | 用于将给定的正则表达式编译成一个模式。 |
Matcher Matcher (CharSequence input) | 用于创建一个用于匹配给定字符串的匹配器,该字符串由用户输入。 |
String toString() | 该方法返回字符串的表示形式。 |
String[] split(CharSequence input) | 该方法基于匹配将字符串拆分。 |
static Boolean matches(String regex, CharSequence input) | 该方法将正则表达式与给定的输入字符串进行匹配。 |
util.regex.Matcher类 这个类用于通过在任何对象或Pattern上调用matcher()函数,在输入字符串上执行匹配操作。这个类不定义任何公共构造函数。
Matcher类
Matcher类中有各种不同的函数,用于处理正则表达式的匹配操作:
方法名 | 描述 |
---|---|
boolean matches() | 此方法检查正则表达式是否与模式匹配。 |
boolean find() | 此方法在字符串中搜索正则表达式的出现。 |
boolean find(int start) | 此方法从指定的起始索引开始在字符串中搜索正则表达式的出现。 |
String group() | 此方法有助于查找匹配的子序列。 |
int start() | 此方法有助于返回匹配子序列的起始索引。 |
int end() | 此方法有助于返回匹配子序列的结束索引。 |
int groupCount() | 此方法有助于返回匹配子序列的总数。 |
在Java中使用正则表达式示例
示例1:此示例演示了在Java代码中使用点运算符的方法。
import java.util.regex.*; class reg { public static void main(String args[]) { System.out.println(Pattern.matches(".r.", "arp")); // 此语句显示布尔值 True,因为第二个字符在字符串和正则表达式中都是 r。 System.out.println(Pattern.matches(".bm", "abc")); // 此语句显示布尔值 False,因为字符串和正则表达式的第三个字符不同。 System.out.println(Pattern.matches("..m", "msm")); // 此语句显示布尔值 True,因为字符串和正则表达式的第三个字符都是 m。 System.out.println(Pattern.matches("a..s", "amns")); // 此语句显示布尔值 True,因为字符串的第一个字符和最后一个字符与正则表达式匹配。 System.out.println(Pattern.matches(".s.", "mas")); // 此语句显示布尔值 False,因为字符串和正则表达式的第二个字符不同。 } }
示例2:以下示例使用正则表达式的不同字符。
import java.util.regex.*; class Reg1 { public static void main(String args[]) { System.out.println(" 1. "); System.out.println( Pattern.matches("^[ a-z]om", "Tom")); // 此语句返回 False,因为字符串以大写字母开头,与正则表达式不匹配。 System.out.println(" 2. "); System.out.println( Pattern.matches("[Rpq]om", "Tom")); // 此语句返回 False,因为字符串以 'T' 开头,与正则表达式中的 R、P 或 Q 中的任何字符不匹配。 System.out.println(" 3. "); System.out.println( Pattern.matches("[Tt]om", "Tom")); // 此语句返回 True,因为字符串以 'T' 开头,与正则表达式中的字符 'T' 匹配。 System.out.println(" 4. "); System.out.println( Pattern.matches("Cat|Rat", "Rat")); // 此语句返回 True,因为字符串与正则表达式的第二部分匹配。 System.out.println(" 5. "); System.out.println( Pattern.matches("[CM]at|[Bb]ad", "Bad")); // 此语句返回 True,因为字符串与正则表达式的第二部分匹配。 System.out.println(" 6. "); System.out.println( Pattern.matches(".*bit.*", "rabbit")); // 此语句返回 True,因为字符串包含 "bit",与正则表达式匹配。 System.out.println(" 7. "); System.out.println( Pattern.matches("^[\d].*", "abc")); // 此语句返回 True,因为字符串以字母开头,与正则表达式不匹配数字。 System.out.println(" 8. "); System.out.println( Pattern.matches("^[^\d].*", "abc123")); // 此语句返回 True,因为字符串以字母开头,与正则表达式由于数字的否定匹配。 System.out.println(" 9. "); System.out.println( Pattern.matches("[a-zA-Z][a-zA-Z][0-9A-Z]", "aPz")); // 此语句返回 False,因为字符串的最后一个字符 'z' 与正则表达式中的 '0-9A-Z' 不匹配。 System.out.println(" 10. "); System.out.println( Pattern.matches("[a-zA-Z][a-zA-Z][a-zA-Z]", "aAA")); // 此语句返回 True,因为字符串中的所有字符与正则表达式匹配。 System.out.println(" 11. "); System.out.println( Pattern.matches("java[tT]poin[tT]$", "javaTpoint")); // 此语句返回 True,因为字符串以 't' 结尾,与正则表达式匹配。 System.out.println(" 12. "); System.out.println( Pattern.matches("\D*", "abcde")); // 此语句返回 True,因为字符串不包含任何数字,所以与正则表达式匹配。 System.out.println(" 13. "); System.out.println( Pattern.matches("\D*", "abcde123")); // 此语句返回 False,因为字符串包含数字,不符合正则表达式。 } }
附录
Java常用正则表达式大全