Java正则表达式之分组和替换方式
正则表达式是用于匹配和处理文本的非常强大的工具。在Java中,我们可以使用java.util.regex
包中的类来实现正则表达式。
在这篇攻略中,我们将讨论正则表达式中的分组和替换方式。
正则表达式中的分组
我们可以使用括号来将正则表达式中的一部分分组,方便后续的操作。分组可以用来匹配、搜索和替换文本中的模式。
例如,我们想匹配一个字符串,该字符串以两个大写字母开头,接着是一个短横线,然后是两个数字和一个短横线,最后是四个数字。我们可以使用分组来实现这个功能:
String regex = "([A-Z]{2})-([0-9]{2})-([0-9]{4})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("AB-12-3456");
if (matcher.find()) {
System.out.println("Group 0: " + matcher.group(0)); // AB-12-3456
System.out.println("Group 1: " + matcher.group(1)); // AB
System.out.println("Group 2: " + matcher.group(2)); // 12
System.out.println("Group 3: " + matcher.group(3)); // 3456
}
该正则表达式:“([A-Z]{2})-([0-9]{2})-([0-9]{4})”将整个字符串分成了3个组:前两个大写字母,中间的两个数字和最后的四个数字。我们可以使用Matcher类的group()方法来获取每个分组的值。
正则表达式中的替换方式
正则表达式中的替换方式是使用正则表达式来搜索并替换文本中的模式。我们可以将找到的模式替换为另一个文本字符串。
例如,我们想把一个字符串中所有的数字替换成"#"。我们可以使用正则表达式来实现:
String regex = "\\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("12345abc6789");
String replaced = matcher.replaceAll("#");
System.out.println(replaced); // "#####abc####"
该正则表达式:"\d+"表示要匹配所有的数字,将所有的数字替换成了"#"。
另一个例子,我们想把一个字符串中的单词首字母大写,可以使用正则表达式和replaceAll()方法:
String text = "java is a programming language";
String replaced = text.replaceAll("\\b[a-z]", m -> m.group().toUpperCase());
System.out.println(replaced); // "Java Is A Programming Language"
该正则表达式:"\b[a-z]"表示匹配一个以小写字母开头的单词。使用replaceAll()方法和Lambda表达式将匹配到的字符串转换成大写字母。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java正则表达式之分组和替换方式 - Python技术站