正则表达式

本文深入探讨了正则表达式在Java编程中的应用,从基础格式到高级技巧,通过实例展示了如何在Java中使用正则表达式进行字符串匹配、替换和分析。包括手机号匹配、邮箱验证、多空格替换、统计英文单词数量等实用功能。

1 基本格式 :字符{个数}
2 常用符号
. 代表一个字符的通配符 能和回车之外的任何字符匹配
[] 字符集 能和括号内的任何一个字符相匹配。方括号内也可以表示一个范围,用“-”符号将起
始和末尾字符区分开来,例如[0-9]
[^] 排斥型字符集 能和集合之外的任意字符匹配
^ 起始位置 定位到一行的起始位置处并向后匹配
$ 结束位置 定位到一行的结尾处并向前匹配
\b 单词边界
\B 非单词边界
() 组 按子表达式进行分组
| 或 或关系的逻辑选择,通常和组合结合使用
\ 转义 匹配反斜杠之后的字符,所以可以匹配一些特殊符号
* 零个或多个 匹配表达式首项字符的零个或多个副本
+ 一个或多个 匹配表达式的首项字符的一个或多个字符
? 零个或一个 匹配表达式首项字符的一个或零个副本
n 重复 匹配表达式首项字符的n个副本
3 关于字符
\d 表示数字,相当于[0-9]
\D 表示非数字,相当于[^0-9]
\s 表示空白符,相当于[\t\n\x0B\f\r]
\S 表示非空白字符,相当于[^\s]
\w 表示单词字符,相当于[a-zA-Z_0-9]
\W 表示非单词字符,相当于[^\w]
4 举例:[0-9]{2,4}\b。 可以匹配 123 1988 2015 16
5.测试工具推荐 正则表达式测试工具 QRe
6 学习网址推荐 正则表达式30分钟入门教程http://deerchao.net/tutorials/regex/regex-1.htm

使用例子:将多个空格替换为一个空格:

public static String format(String value) {
        String stmt_text =    value.trim().replaceAll("\\s{2,}", " ");
        String abc = stmt_text.replace(" ", ",");
        return abc;
    }

统计一篇文章中英文单词的数量

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 本文是 编写高质量代码之Java 秦小波 成林 著 
 * 建议57:推荐在复杂字符串操作中使用正则表达式  学习笔记
 * @author Administrator
 *
 */

public class RegularExpressions {

    public static void main(String[] args) {
        //接收键盘输入 
        Scanner input = new Scanner(System.in);

        while(input.hasNext()){
            String str = input.nextLine();
             //正则表达式对象
            //在Java的正则表达式中"\b"表示的是一个单词的边界,
            //它是一个位置界定符,一边为字符或数字,另外一边则非字符或数字,
            //"\w"(它表示的是字符或数字)
            Pattern pattern = Pattern.compile("\\b\\w+\\b");
            Matcher matcher = pattern.matcher(str);
            //记录单词数量
            int wordsCount = 0;
            while (matcher.find()) {
                wordsCount++;
            }
            System.out.println(str+" 单词数 "+wordsCount);
        }
    }
}

匹配手机号

[1] 匹配1 ,[0-9]匹配 0-9,{10}个数为1o ,一共11位
Pattern.compile("[1][0-9]{10}").matcher(内容).matches()

匹配邮箱

 Pattern.compile("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$").matcher(输入内容).matches()
本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值