当先锋百科网

首页 1 2 3 4 5 6 7

在Java正则表达式中,$是一个特殊符号,用于表示一个字符串的结尾。如果一个字符串以$结尾,则可以使用$来匹配该字符串。例如:

String regex = "abc$";         // 匹配以abc结尾的字符串
String str1 = "helloabc";      // 不匹配,因为结尾不是abc
String str2 = "abcworld";      // 匹配,因为结尾是abc
System.out.println(str1.matches(regex));    // false
System.out.println(str2.matches(regex));    // true

需要注意的是,$在正则表达式中也可以表示行尾的位置。当$出现在正则表达式的末尾时,它会匹配一整行的结尾位置。例如:

String regex = "^Hello$";         // 匹配以Hello为一行的结尾的字符串
String str1 = "Hello world";      // 不匹配,因为结尾不是一行的结尾
String str2 = "Hello";            // 匹配,因为Hello就是一行的结尾
System.out.println(str1.matches(regex));    // false
System.out.println(str2.matches(regex));    // true

而在正则表达式中,$的另一个常用功能是表示一个捕获组的结束。捕获组是用小括号括起来的一组正则表达式,可以用于提取字符串中的一部分内容。当一个捕获组结束时,可以使用$来引用它。例如:

String regex = "(\\d{3})-(\\d{4})-(\\d{4})";
String str = "我的电话号码是010-1234-5678";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(1));   // 010
System.out.println(matcher.group(2));   // 1234
System.out.println(matcher.group(3));   // 5678
}

在这个例子中,我们提取了一个电话号码,该号码由三个部分组成,分别是区号、电话号码前四位和电话号码后四位。我们使用了三个捕获组,每个捕获组都使用了小括号括起来。当我们需要引用其中的一个捕获组时,可以使用$加上该捕获组的编号来引用。例如$1表示第一个捕获组,$2表示第二个捕获组,以此类推。执行上述代码,输出结果如下:

010
1234
5678

这是每个捕获组提取出来的内容。