欢迎访问宙启技术站
智能推送

Java正则表达式函数的用法

发布时间:2023-05-20 05:17:58

Java中提供了很多正则表达式函数,下面我们来一一进行介绍。

1. Pattern.compile(String regex)

应该算是最基本的一个了,它返回一个编译好的正则表达式模板。而regex是一个字符串表示,且不能为空。而且 先对字符串进行转义,例如,对于单个的字母a,应写成“a”,而不是‘a’。

Pattern pattern = Pattern.compile("regex");

2. Pattern.matcher(CharSequence input)

该方法返回一个新的Matcher对象。Matcher对象是正则表达式的运行时表示,其中(CharSequence)input是用来匹配对应正则表达式的字符序列。

Matcher matcher = pattern.matcher("input");

3. Matcher.matches()

用于测试输入的字符序列是不是与带有正则表达式的字符序列匹配。当且仅当整个序列相匹配,才返回 true。注意,与 find 方法不同,matches() 要求整个序列都匹配,而不是部分匹配。

matcher.matches();

4. Matcher.find()

find方法是用于在输入序列中查找与模式匹配的下一个序列。调用 find()方法将从输入序列的开头开始查找。

while(matcher.find()){

    System.out.println("Match found at index "+matcher.start()+" to "+matcher.end());

}

5. Matcher.group()和 Matcher.group(int group)

当我们查找到一个匹配的字符串时,Matcher中提供一个group方法来获取匹配到的字符串组。例如下面我们可以查找限制"user"的字符串:

String regex = "user";

String input = "username:user,password:123456";

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(input);

while (matcher.find()) {

    System.out.println(matcher.group());

}

同时,我们也可以利用group(int group)方法按照括号组编号来获取匹配到的字符串组。例如下面的代码我们可以查找数字字符串:

String regex = "(\\d+)";

String input = "1abc2abc3";

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(input);

while (matcher.find()) {

    System.out.println(matcher.group(1));

}

6. Pattern.split(CharSequence input)

split() 方法根据匹配给定的正则表达式来拆分字符串。将输入字符串分割成与此模式匹配的子字符串数组。 

例如,我们想要从以下字符串中提取所有的数字:

String input = "1abc2abc3";

String regex = "\\D+";

Pattern pattern = Pattern.compile(regex);

String[] items = pattern.split(input);

for (String item : items) {

    System.out.println(item);

}

7. Pattern.matches(String regex, CharSequence input)

Pattern.matches() 方法在一个字符串上执行多个正则表达式,直到找到一个匹配。如果找到一个与此字符串匹配的表达式,则该方法返回 true 。

String input = "username:user,password:123456";

String regex = ".*?username:(.*?),password:(\\d*)";

boolean isMatch = Pattern.matches(regex, input);

if (isMatch) {

    System.out.println("Match found");

} else {

    System.out.println("Match not found");

}

8. Matcher.replaceAll(String replacement)

该方法用于接受一个替换字符串来替换在输入字符串中所有找到的匹配。例如,我们想要将以下字符串中的所有逗号替换为分号:

String input = "username:user,password:123456";

String regex = ",";

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(input);

String newInput = matcher.replaceAll(";");

System.out.println(input);

System.out.println(newInput);

以上便是一些常用的Java正则表达式函数的用法,使用正则表达式可以帮助我们更加快速和准确的处理字符串。