Regular Expression

本文详细介绍了正则表达式的各种元素及其用法,包括特殊字符、边界匹配、重复模式、预搜索等内容,并通过一个Java程序实例展示了如何使用正则表达式来解析URL中的超链接。

        

\d:任意一个数字.0~9
\w:任意一个字母或数字或下划线.0~9,a~z,A~Z
\s:表示制表符,换行符,空格等空白字符中任意一个
. :可以匹配任意一个字符(不包括 \n,若匹配 \n 用  [\s\S])
[ab4@]:匹配a或b或4或@
[^ab4@]:匹配a或b或4或@之外的任意一个字符
[f-k]:匹配f到k之间任意一个字符
[f-k3-9]:匹配f到k,3到9之间任意一个字符
 除 ^ -外,其他符号包含在中括号中就代表其本身,除非加转义字符·
\d{6}:匹配连续6位数字 
\d\d{6}:匹配连续7位数字
(\d\d) {6}:匹配连续12位数字  
\d{3,6}:匹配·3~6位数字(贪婪模式:比如1234567)
\d{3,6}?:匹配3~6位数字(非贪婪模式:比如1234567)
 :相当于{0,1},表示出现0或1次
+  :相当于{1,},表示至少出现1次
*   :相当于{0,},表示不出现或出现任意次数

 字符边界(匹配的不是字符而是位置,符合某种条件的位置)

          ^ :与字符串开始的地方匹配:如字符串:asfg wat43 t34tg grg  ,^a匹配的是第一个a

          $ :与字符串结束的地方匹配:如字符串:asfg wat43 t34tg grg  ,g$匹配的是最后一个g

          \b:匹配一个单词边界(前面和后面的字符不全是\w)

                 如字符串:asfg wat4x3 t34tg grg ,wat43\b , x表示\b,左侧4和右侧3都能用 \w表示,所以不能匹配

CASE INSENSITIVE(case insensitive):大小写不敏感,即忽略大小写

SINGLELINE(single line):单行模式:

        1.整个文本看作一个字符串,只有一个开头一个结尾

        2.使小数点“ . ”可以匹配包含换行符(\n)在内的任意字符

MULTI LINE(multi line):多行模式:

       1.每行都是一个字符串,都有开头和结尾

       2.在指定MULTI LINE后,如果仅需匹配字符串开头和结尾位置,可以使用\A,\Z

         比如\Ai表示匹配第一行(第一个字符串)开头为i,\Zi表示匹配最后一行(最后一个字符串)结尾为i

|  :或的关系,匹配左边或右边  比如:zhangsan | lisi  表示匹配zhangsan或lisi


捕获组 : 例如字符串:goto gogo todo toto,要匹配gogo toto即 ([a-z]{2})\1,[a-z]{2}表示表示每两个单词一  组匹配,通过括号进行分组,并存起来,\1表示表示匹配到的go,to,go和to后面在跟一个go,to才符合要求



非捕获组(?:expression):使用(),但不需要保存()捕获的内容

零宽断言(环视/预搜索)
                 1.是对位置的匹配
                 2.匹配内容不计入最终匹配结果
      (?= exp )   :断言自身出现的位置后面能匹配到exp表达式
        (? != exp  )    :断言自身出现的位置后面不能匹配到exp表达式
      (?<= exp) :断言自身出现的位置前面能匹配到exp表达式
      (?<!exp  )  :断言自身出现的位置前面不能匹配到exp表达式

实例:读取一个URL,并解析
package RegExp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp {

	public static void main(String[] args) {
		String desStr = getURLContent("http://www.163.com","utf-8");
		System.out.println(desStr);
		//获取超链接
//		Pattern p = Pattern.compile("<a[\\s\\S]+?</a>");//取到超链接的整个内容
//		Pattern p = Pattern.compile("href=\".+?\"");//取到超链接的地址
		Pattern p = Pattern.compile("href=\"(.+?)\"");//取到超链接的地址,在分组处理
		
		Matcher m = p.matcher(desStr);
		
		while(m.find()) {
			System.out.println(m.group());
			System.out.println("内容:" + m.group(1));
		}
	}
	
	/**
	 * 获得url对应的网页内容
	 * @param StrUrl
	 * @return
	 */
	public static String getURLContent(String StrUrl,String charSet) {
		StringBuffer  content = new StringBuffer();
		String str;
		try {
			URL url = new URL(StrUrl);
			BufferedReader breader = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(charSet)));
			while((str = breader.readLine()) != null) {
				content.append(str);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return content.toString();
	}
}





一、数据采集层:多源人脸数据获 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提 1 张图像)或 “手动选择帧” 提人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值