当前位置: 首页 > wzjs >正文

网站服务器 购买时长美食网页制作素材

网站服务器 购买时长,美食网页制作素材,学习电子商务网站建设与管理的收获,中小企业的网站建设Matcher类是Java正则表达式API的核心组件之一(位于java.util.regex包),用于执行复杂的字符串匹配操作。它与Pattern类配合使用,提供查找、替换、分组提取等功能。 1. Matcher类的作用 对输入字符串执行匹配操作(查找、…

Matcher类是Java正则表达式API的核心组件之一(位于java.util.regex包),用于执行复杂的字符串匹配操作。它与Pattern类配合使用,提供查找、替换、分组提取等功能。


1. Matcher类的作用

  • 对输入字符串执行匹配操作(查找、替换等)

  • 支持分组提取(通过()捕获的子表达式)

  • 提供位置信息(匹配的起始和结束索引)

  • 支持多次匹配重置


2. 创建Matcher对象

Matcher对象必须通过Pattern.matcher()方法创建,不能直接实例化。

Pattern pattern = Pattern.compile("\\d+"); // 编译正则表达式
Matcher matcher = pattern.matcher("A1B2C3"); // 创建Matcher对象

3. 核心方法详解

3.1 匹配检查方法

方法说明
boolean matches()完全匹配:检查整个字符串是否匹配正则表达式
boolean lookingAt()部分匹配:检查字符串开头是否匹配
boolean find()查找子串:查找字符串中下一个匹配的子串
boolean find(int start)从指定位置开始查找

示例

Matcher matcher = Pattern.compile("Java").matcher("Java is fun");System.out.println(matcher.matches());   // false(不完全匹配)
System.out.println(matcher.lookingAt()); // true(开头匹配)
System.out.println(matcher.find());      // true(找到"Java")

3.2 获取匹配结果

方法说明
String group()返回当前匹配的子串
String group(int group)返回指定分组的子串
int groupCount()返回分组数量(不包括group(0))
int start()返回当前匹配的起始索引
int end()返回当前匹配的结束索引+1

示例(分组提取)

Pattern pattern = Pattern.compile("(\\d{3})-(\\d{4})");
Matcher matcher = pattern.matcher("电话: 123-4567");if (matcher.find()) {System.out.println("完整匹配: " + matcher.group(0)); // "123-4567"System.out.println("区号: " + matcher.group(1));    // "123"System.out.println("号码: " + matcher.group(2));    // "4567"System.out.println("分组数量: " + matcher.groupCount()); // 2
}

3.3 替换操作

方法说明
String replaceAll(String replacement)替换所有匹配的子串
String replaceFirst(String replacement)替换第一个匹配的子串
Matcher appendReplacement(StringBuffer sb, String replacement)渐进式替换(需配合appendTail()

示例

Matcher matcher = Pattern.compile("Java").matcher("Java is cool. Java is powerful.");// 替换所有匹配
System.out.println(matcher.replaceAll("Python")); 
// 输出: "Python is cool. Python is powerful."// 渐进式替换
StringBuffer sb = new StringBuffer();
while (matcher.find()) {matcher.appendReplacement(sb, "Python");
}
matcher.appendTail(sb);
System.out.println(sb.toString()); // 同上

3.4 重置与区域限制

方法说明
Matcher reset()重置匹配器(从头开始匹配)
Matcher reset(CharSequence input)重置并更换输入字符串
Matcher region(int start, int end)限制匹配范围(左闭右开区间)

示例

Matcher matcher = Pattern.compile("\\d+").matcher("A1B2C3");matcher.region(2, 4); // 只匹配"B2"部分
while (matcher.find()) {System.out.println(matcher.group()); // 输出: "2"
}

4. 高级功能

4.1 命名分组(Java 7+)

通过(?<name>regex)定义命名分组,通过group(String name)访问。

Pattern pattern = Pattern.compile("(?<area>\\d{3})-(?<number>\\d{4})");
Matcher matcher = pattern.matcher("123-4567");if (matcher.find()) {System.out.println("区号: " + matcher.group("area"));   // "123"System.out.println("号码: " + matcher.group("number")); // "4567"
}

4.2 非捕获分组

使用(?:regex)表示非捕获分组(不占用分组编号)。


Pattern pattern = Pattern.compile("(?:Mr|Ms) (\\w+)");
Matcher matcher = pattern.matcher("Mr Smith");if (matcher.find()) {System.out.println(matcher.group(1)); // "Smith"(group(0)为"Mr Smith")
}

5. 性能优化建议

  1. 复用Matcher对象
    避免在循环中重复创建Matcher,优先调用reset()

    
    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher("");for (String s : strings) {matcher.reset(s);while (matcher.find()) { ... }
    }

  2. 预编译正则表达式
    多次使用的正则表达式应编译为Pattern对象。

  3. 合理使用区域限制
    通过region()缩小匹配范围提升性能。


6. 完整示例

import java.util.regex.*;public class MatcherDemo {public static void main(String[] args) {// 1. 编译正则表达式Pattern pattern = Pattern.compile("(\\d{3})-(\\d{4})");// 2. 创建MatcherMatcher matcher = pattern.matcher("电话: 123-4567, 备用: 890-1234");// 3. 查找所有匹配while (matcher.find()) {System.out.println("完整匹配: " + matcher.group());System.out.println("区号: " + matcher.group(1));System.out.println("号码: " + matcher.group(2));}// 4. 替换操作String replaced = matcher.replaceAll("***-$2");System.out.println(replaced); // "电话: ***-4567, 备用: ***-1234"}
}

7. 总结

功能关键方法说明
完全匹配matches()检查整个字符串是否匹配
部分匹配lookingAt()检查字符串开头是否匹配
查找子串find()遍历所有匹配的子串
分组提取group(int) / group(String)获取捕获组内容
替换操作replaceAll() / replaceFirst()替换匹配的子串
区域限制region()限定匹配范围

核心要点

  • Matcher必须通过Pattern.matcher()创建。

  • find()matches()的区别:前者查找子串,后者要求完全匹配。

  • 分组编号从1开始,group(0)表示整个匹配。


文章转载自:

http://ZQ4XVtf3.tfpmf.cn
http://gCNvpspS.tfpmf.cn
http://Cn75FWF4.tfpmf.cn
http://Xjrj3Yfq.tfpmf.cn
http://XweFdoTJ.tfpmf.cn
http://4xaX3A7n.tfpmf.cn
http://fZwH7fPt.tfpmf.cn
http://N06ZQiHX.tfpmf.cn
http://lns1sQEY.tfpmf.cn
http://1OQmSR66.tfpmf.cn
http://2694jiY6.tfpmf.cn
http://vGVGjDYT.tfpmf.cn
http://SrcaXKRS.tfpmf.cn
http://ZzWcqS0z.tfpmf.cn
http://rXQtTjFk.tfpmf.cn
http://QD2JlXyA.tfpmf.cn
http://VBCCHwL0.tfpmf.cn
http://u6h6MzMU.tfpmf.cn
http://uf4Kl1Ke.tfpmf.cn
http://B9797Whg.tfpmf.cn
http://GT3gqbR3.tfpmf.cn
http://SkppZpWX.tfpmf.cn
http://1DtaRbkj.tfpmf.cn
http://IFjT0f6b.tfpmf.cn
http://csSWnJH1.tfpmf.cn
http://R3vTtQfW.tfpmf.cn
http://jvbkFuy9.tfpmf.cn
http://a8ALmLsM.tfpmf.cn
http://lmvqAefg.tfpmf.cn
http://R9U3RRsY.tfpmf.cn
http://www.dtcms.com/wzjs/774396.html

相关文章:

  • 网站建设工作室的营销方式创业计划书织梦网站环境搭建
  • 保定 网站建设软件开发wordpress只能传2m
  • 超级网站建设wordpress qvanxian
  • 长沙交互网站设计服务商做淘宝客需要自己建网站吗
  • wordpress显示网站在线人数西安风险等级最新
  • 中山市建网站公司中山最好的网站建设公司哪家好
  • 做非法网站的有没有做商城网站要哪些流程图
  • 专门做地方特产的网站南宁模板开发建站
  • 名校长工作室网站建设羊了个羊开发公司
  • 网站服务器多少钱一年无经验可以做网站编辑吗
  • 网站地图制作方法广州商旅网站制作
  • 如何发布一个网站新网企业邮箱登录入口
  • 网站开发实训内容业绩统计网站开发
  • 网站开发 360百科菏泽做网站推广
  • 微信网站 微信支付设计公司组织架构
  • 那个网站做外贸做网站竞价怎么找客户
  • 做购物网站学什么技术网站收录下降
  • 旅游网站的建设方案统一身份认证平台
  • 一个网站的制作过程从化营销型网站建设
  • 百度做网站多少钱一年旅游网站建设成本核算
  • 免费做网站站标哈尔滨企业网站seo
  • 南京做网站价格上海市工程质量建设管理协会网站
  • 空气能空调如何做网站vps做网站的环境
  • 网站语言版本建设厅网站装修合同模板
  • 青岛网站建设大全毛绒玩具东莞网站建设
  • 定制网站与模板网站的主要区别如何增加网站板块
  • 中国住建部网站查询网对接标准做好门户网站建设
  • 网站建设实践描述三优科技 网站开发
  • 西安网站推广方案菜单点开404 wordpress
  • 网站建设情况 报告WordPress网站被恶意登录