正则表达式$1,$2是什么意思
$1,$2表达的是小括号分组里面的内容:$1是第一个小括号里的内容,$2是第二个小括号里面的内容,依此类推。例如:
str = str.replaceAll("(\\d+)","\\*$1\\*"); // s1就表示正则表达式第一个括号内匹配到的内容。 // 如: 123 *123*
使用41相关正则可以减少代码量,如以下机试题:
描述
将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
注意:本题有多组样例输入。import java.util.Scanner; import java.util.regex.Pattern; // 不使用$1 public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { String str = sc.nextLine(); StringBuffer sb = new StringBuffer(); if(str.matches("[0-9]{1,}")) { System.out.println("*" + str + "*"); } else { String temp; for (int i = 0; i < str.length(); i++) { temp = String.valueOf(str.charAt(i)); if(temp.matches("[0-9]")) { if(i == 0 || String.valueOf(str.charAt(i-1)).matches("[^0-9]")) { sb.append("*"); } sb.append(temp); if(i == str.length() - 1 || String.valueOf(str.charAt(i+1)).matches("[^0-9]")) { sb.append("*"); } } else { sb.append(temp); } } System.out.println(sb); } } } }
import java.util.*; // 使用$1 public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); str = str.replaceAll("(\\d+)","\\*$1\\*"); System.out.println(str); } }
}