正则表达式(Regular Expression)教程

sed识别regular expression 小弟在sed使用中,对正则表达式有几个地方犯迷糊,为了彻底弄明白,试验之…… 特将结果呈与各位,请师兄们批评指正!也让初学者少走弯路。虽说有些问题在明白之后,感觉很简单,贴出来好像没必要;但在明白之前,的确很让人糊涂,所以还是决定贴出来。 In basic regular expressions the metacharacters ?, +, {, |, (, and ) lose their special meaning; instead use the backslashed versions /? 阅读详情

正则表达式简介

  • 为什么需要正则表达式
    • 文本的复杂处理
  • 正则表达式的优势和用途
    • 一种强大而灵活的文本处理工具;
    • 大部分编程语言、数据库、文本编辑器、开发环境都支持正则表达式
  • 正则表达式定义:
    • 正如它的名字一样是描述了一个规则,通过这个规则可以匹配一类字符串。
    • 学习正则表达式很大程度上就是学习正则表达式的语法规则
  • 开发中使用正则表达式的流程:
    • 分析所要匹配的数据,写出测试用的典型数据
    • 在工具软件中进行匹配测试
    • 在程序中调用通过测试的正则表达式

正则表达式语法

普通字符

  • 字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

简单的转义字符

转义字符含义
\n换行符
\t制表符
\\代表\本身
\^,\$,\.,\(,\),\{,\},\?,\+,\*,|,\[,\]匹配这些字符本身

标准字符集合

  • 能够与“多种字符”匹配的表达式
  • 注意区分大小写,大写是相反的意思
符号含义
\d任意一个数字,0~9中任意的一个
\w任意一个字母或数字或下划线,依旧是A~Z,a~z,0~9, _中任意一个
\s包括空格、制表符、换行符和空白字符的其中任何一个
.小数点可以匹配除了”\n”以外的任意一个字符,如果要匹配包括”\n”在内的所有字符,一般用[\s\S]

自定义字符集合:

  • [] 方括号匹配方式,能够匹配方括号中任意一个字符
表达式含义
[abc4@]匹配”a”或”b”或”4”或”@”
[^abc]匹配”a”,”b”,”c”之外的任意一个字符
[f-k]匹配”f”~”k”之间的任意一个字母
[^A-F0-3]匹配”A”~”F”,”0”~”3”之外的任意一个字符

- 正则表达式的特殊符号,被包含到中括号中,则失去了特殊意义,除了^,- 之外
- 标准字符集合,除了小数点外,如果被包含于中括号,自定义字符集合将包含该集合。比如:[\d.-+]将匹配:数字、小数点、+、-

量词(Quantifier)

  • 修饰匹配次数的特殊符号
表达式含义
{n}表达式重复n次
{m,n}表达式至少重复m次,最多重复n次
{m,}表达式至少重复m次
?匹配表达式0次或者1次,相当于{0,1}
+表达式至少出现1次,相当于{1,}
*表达式不出现或者出现任意次,相当于{0,}

- 匹配次数中的贪婪模式(匹配的字符越多越好,默认!)
- 匹配次数中的非贪婪模式(匹配的字符越少越好,修饰匹配次数的特殊符号后再加上一个?号

字符边界

  • (本组标记匹配的不是字符而是位置,符合某种条件的位置)
符号含义
^与字符串开始的地方匹配
$与字符串结束的地方匹配
\b匹配一个单词边界

- \b 匹配这样一个位置:前面的字符和后面的字符不全是\w

选择符和分组

表达式作用
| 分支结构左右两边表达式之间“或”关系,匹配左边或者右边
() 捕获组(1)在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰.(2)取匹配结果的时候,括号中的表达式匹配到的内容可以背单独的到(3)每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号。捕获元素编号为零的第一个捕获使由整个正则表达式模式匹配的文本
?:Expression 非捕获组一些表达式中,不得不使用(),但又不需要保存()中的表达式匹配的内容,这是可以使用非捕获组来抵消使用()带来的副作用

- 反向引用(\nnn)每一对() 都会分配一个编号,使用() 的捕获根据左括号的顺序从1开始自动编号。通过反向引用,可以对分组已捕获的字符串进行引用。

预搜索(零宽断言)

  • 只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度
  • 这个位置应该符合某个条件。判断当前位置的前后字符,是否符合制定的条件,但不匹配前后的字符。是对位置的匹配
  • 正则表达式匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式匹配到的仅仅是位置,活着匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。占有字符还是零宽度,是针对匹配的内容是否保存到最终的匹配结果中而言的。
表达式含义
(?=exp)断言自身出现的位置的后面能够匹配表达式exp
(?<=exp)断言自身出现的位置的前面能够匹配表达式exp
(?!exp)断言此位置的后面不能匹配表达式exp
(?<!exp)断言次位置的前面不能匹配表达式exp

正则表达式的匹配模式

  • IGNORECASE忽略大小写模式
    • 匹配时忽略大小写
    • 默认情况下,正则表达式是要区分大小写的
  • SINGLELINE 单行模式
    • 整个文本看作一个字符串,只有一个开头,一个结尾
    • 使小数点. 可以匹配包含换行符(\n)在内的任意字符。
  • MULTILINE 多行模式
    • 每行都是一个字符串,都有开头和结尾。
    • 在指定了MULTILINE之后,如果需要仅匹配字符串开始和结束位置,可以使用\A 和 \Z

常用正则表达式列表

含义表达式
匹配中文字符[\u4e00-\u9fa5]
匹配空白行\n\s*\r
匹配HTML标记<(\S*?)[^>]*>.*?</\1>|<.*?/>
匹配首尾空白字符^\s*|\s*$
匹配Email地址\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL[a-zA-Z]+://[^\s]*
匹配国内电话号码\d{3}-\d{8}|\d{4}-\d{7}
匹配腾讯QQ号码[1-9][0-9]{4,}
匹配中国邮编[1-9]\d{5}(?!\d)
匹配身份证号码\d{15}|\d{18}
匹配ip地址\d+\.\d+\.\d+\.\d+

在编辑器中使用正则表达式查找

  • 一般在各种IDE或文本编辑器都支持正则表达式的查找(Ctrl+F或Cmd+F 调出查找,勾选正则查找)
  • Sublime Text
    这里写图片描述
  • Intel IDEA
    这里写图片描述

爬虫原理代码

package com.coderbean.regex.test;

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.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 网络爬虫取链接小Demo
 *
 * Created by Chang on 15/10/7.
 */
public class WebSpiderTest {
    public static void main(String[] args) {
        String destStr = getURLContent("http://www.163.com","gbk");
//        System.out.println(destStr);
//        //取到的是超链接的整个内容
//        Pattern pattern = Pattern.compile("<a[\\s\\S]+?</a>");  
        String regexStr = "href=\"(http://.+?)\"";

        List<String> list = getMatherSubstrs(destStr,regexStr);
        for(String temp:list){
            System.out.println(temp);
        }

    }
    public static List<String> getMatherSubstrs(String destStr,String regexStr){

        List<String> list = new ArrayList<String>();
        Pattern pattern = Pattern.compile(regexStr);
        Matcher matcher = pattern.matcher(destStr);

        while(matcher.find()){
            list.add(matcher.group(1));
        }
        return list;
    }
    /**
     * 获得URL对应的网页的内容
     * @param urlStr
     * @return
     */
    public static String getURLContent(String urlStr, String charset){
        try {
            URL url = new URL(urlStr);
            StringBuilder sb = new StringBuilder();
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(url.openStream(), Charset.forName(charset)));
            String temp = "";
            while(null!=(temp = bufferedReader.readLine())) {
                sb.append(temp);
                sb.append('\n');
            }
            return sb.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}
Jmeter 兵器谱之 Regular Expression Extractor 在 Apache JMeter 中,除了传统的 Timer、BeanShell PreProcessor 和 PostProcessor 等元件外,还有一个非常强大且常被忽视的元件:Regular Expression Extractor。正则表达式提取器是一个可以从响应中提取特定格式的文本的元件。它可以用于从复杂的响应数据中获取有用的信息,例如 API 返回的 JSON 或 XML 数据。 阅读详情

相关推荐

RegEx报错“Invalid regular expression“的转义字符处理

在使用正则表达式时,Invalid regular expression错误常由转义字符处理不当引起。本文分析了该问题的成因,并提供了解决方案。主要问题包括双重转义和语言特定的转义规则。解决方案包括使用原始字符串标记、显式双重转义以及利用特殊字符转义表。文章还提供了实战案例和跨语言转义对照表,建议优先使用原始字符串、添加注释说明转义逻辑、利用测试工具和转义函数。通过这些方法,用户可以系统性解决正则表达式的转义相关错误。

shejizuopin的博客 1630

Qt 正则表达式

qt正则表达式

mct123的专栏 1326

QRegularExpressionValidator类的使用示例(C/C++)

总结起来,QRegularExpressionValidator类是一个强大的工具,可用于验证用户输入的文本。通过设置适当的正则表达式模式,我们可以限制用户输入的内容,并提供即时的反馈。它可以帮助我们确保用户输入的内容符合特定的正则表达式模式。本文将提供一个详细的示例,演示如何使用QRegularExpressionValidator类来验证用户输入。如果用户输入了其他字符,文本框将会显示一个红色的边框来指示输入无效。你也可以使用其他的正则表达式模式来满足不同的需求。类的其他方法来获取有关验证器的信息。

DevForge的博客 304

Qt正则表达式匹配中文字符

Qt的正则表达式是支持中文字符表示字符范围的,所以可以使用两种表示法匹配中文字符。Qt的字符串内部使用的是Unicode编码,中文字符范围(一般认为)是。第一种:使用Unicode表示。对应Unicode编码范围。第二种:直接使用中文来表示。

littlespader的博客 1338

QRegularExpressionValidator类的应用详解

本文介绍了QRegularExpressionValidator类的使用方法,并通过示例代码演示了如何创建验证器对象、设置正则表达式并将验证器与用户输入控件关联。使用QRegularExpressionValidator可以充分利用正则表达式的强大功能,简化开发流程,提高代码的可维护性和健壮性。QRegularExpressionValidator是QT中的一个验证器类,主要用于对输入的文本进行正则表达式验证。在实际开发中,我们经常需要对用户输入的内容进行合法性验证,以确保程序运行的正确性和稳定性。

DevPulse的博客 967

vit的cam和注意力图: VIT模型的可解释性

VIT的热力图怎么画

YI_SHU_JIA的博客 1万+

正则表达式(Regular Expression)

使用测试方法 在编程语言中,正则表达式用于匹配指定的字符串。 通过正则表达式创建匹配模式(规则)可以帮你完成指定匹配。 如果想要在字符串 The dog chased the cat 中匹配到 the 这个单词,可以使用如下正则表达式:/the/。 注意,正则表达式中不需要引号。 JavaScript 中有多种使用正则表达式的方法。 测试正则表达式的一种方法是使用 .test() 方法。 .test() 方法会把编写的正则表达式和字符串(即括号内的内容)匹配,如果成功匹配到字符,则返回 true,反之,返回

kiku 1967

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1221

正则表达式(Regular Expression) 简明教程

正则表达式(Regular Expression) 简明教程 文章目录正则表达式(Regular Expression) 简明教程@[toc]1. 什么是正则表达式?2. 图形化工具理解正则表达式3. 正则表达式语法3.1 原义字符3.2 转义字符3.3 字符集合`[]`3.4 内置字符集3.5 量词3.6 贪婪与非贪婪贪婪模式非贪婪模式3.7 字符边界3.8 选择表达式3.9 分组与引用分组回溯...

EvanStark 650

SDFCOM_SWC警告深度剖析:从assign短路到时序标注失效的链路追踪

本文深入剖析了SDFCOM_SWC警告的根源,从assign短路到时序标注失效的全链路追踪。通过分析RTL设计中的assign语句陷阱、综合阶段的优化变形以及PrimeTime生成SDF文件的视角,提出了重构RTL设计、警告抑制和SDF生成优化等解决方案,帮助工程师有效避免时序标注问题。

weixin_42519985的博客 363

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

正则表达式(regular expression)简明教程

正则表达式(regular expression)简明教程摘要: 最近,由于要学习字符串的相关知识,所以搜索了一些网络上有关正则表达式的学习笔记来学习,收获很多,在此对正则表达式的相关知识做一点小小的总结 在字符串匹配当中,有时我们并不想将两个确定的字符串进行匹配,而是使用已有的字符串和已经储存的字符串模式进行匹配,所以这就使用到了正则表达式,那么正则表达式的基本组成有: A.单个的字符:字

aaron_1996的专栏 1244

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

Regular Expression Decoder:高效解析复杂文本的利器

Regular Expression Decoder:高效解析复杂文本的利器 在现代软件开发中,处理和解析文本数据是一项常见且关键的任务。特别是在金融、数据分析和日志处理等领域,高效且准确的文本解析工具至关重要。今天,我们将介绍一个强大的开源项目——Regular Expression Decoder,它能够帮助开发者利用正则表达式快速构建对象,从而简化复杂文本数据的处理流程。 项目介绍 Regu...

gitblog_00955的博客 1017

SCADA|用KingSCADA实现设备台账的查询功能

以上为用KingSCADA实现设备台账的查询功能,另外还有一些细节功能,比如当点击增加按钮时弹出的信息窗口内的信息希望是在选中的某行信息,只要找到差不多的设备,修改个别参数即可,避免增加时弹出空白页,所有信息都需要填写。以上为实现设备台账查询的最简单实现,实际项目中可能会更复杂,你做过哪些设备台账或相关的功能,有比较好的创意或高难度功能方法,欢迎在留言区评论,或在交流群探讨,互通有无,共同进步。首先完成界面的组态工作,主要是通过查询按钮,查询SQLServer数据库的设备台账数据,然后填充到报表内。

做有价值的事,积累有价值的笔记! 477

vue3 - 详细实现用户收货地址识别解析“姓名/手机号/省市区/街道/乡镇村庄“关键字,用户复制粘贴一段含有姓名电话/详细地址的文字文本信息,vue3自动识别拆分并填入到对应表单字段中,详细示例代码

vue3,nuxt3,快递地址读取,收货地址解析、快递地址解析、物流地址解析自动识别,收货地址解析,从发货地址中拆出姓名电话地址,根据粘贴的字符串提取姓名地址,vue3地址信息自动识别,ts,vue3智能识别地址,提取姓名电话地址信息,自动识别出省市区街道姓名手机号等,根据文本自动解析出收货信息,怎么识别文本中的手机号,粘贴板地址识别,地址智能识别,如何识别收货地址中的关键字,粘贴一段文字后,自动识别到姓名/手机号/收货地址,vue3仿淘宝地址智能识别解析实现,省市区街道智能解析,vue3收货地址,识别地址

✅ 精选推荐文章 5500

正则表达式 regular expression

1、正则表达式的语法模块:普通字符、特殊字符、标准字符集、自定义字符集、量词表达式、零宽表达式; 2、常用几种正则表达式; 3、java中使用正则表达式。

lintiddler的博客 2399

QGIS编译(跨平台编译)之五十六:QScintilla编译、QScintilla安装(Windows、Linux、MacOS环境下编译、安装)

QGIS编译;QScintilla编译、QScintilla安装(Windows、Linux、MacOS环境下编译、安装)

LuckyHanMo的博客 1895

正则表达式Regular expression

Ⅰ. 简介 正则表达式(regular expression)是一种字符串匹配模式或者规则,它可以用来检索、替换那些符合特定规则的文本。正则表达式几乎适用于所有编程语言,无论是前端语言 JavaScript,还是诸如许多后端语言,比如 Python、Java、C# 等,这些语言都提供了相应的函数、模块来支持正则表达式,比如 Python 的 re 模块就提供了正则表达式的常用方法。 Ⅱ. 正则表达式语法 1) 元字符 正则表达式元字符 元字符 匹配内容 . 匹配除换行符以外的任

noobiee的博客 1247

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

10. Regular Expression Matching 正则表达式匹配

题目:Regular Expression Matching 正则表达式匹配 难度:困难 Given an input string (s) and a pattern (p), implement regular expression matching with support for'.'and'*'. '.' Matches any single character. '*' ...

qq_21963133的博客 550

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

正则表达式基础 Regular Expression

正则表达式基础 Regular Expression 正则表达式简介   n  为什么需要正则表达式? q  文本的复杂处理。 n  正则表达式的优势和用途? q  一种强大而灵活的文本处理工具; q  提供了一种紧凑的、动态的方式,能够以一种完全通用的方式来解决各种字符串处理(例如:验证、查找、替换等)问题; q  大部分语言[d1] 、数据库都支持正则表达式。 n  正则表达

daiyy0921的专栏 4655

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

正则表达式(Regular Expression)学习网址分享

正则表达式(Regular expressions,也叫REs、 regexs 或regex patterns),是一种文本模式,包括普通字符(例如,a 到z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。我们在最开始学习的阶段会去搜索很多的资料并且需要花费很多时间在资料整合上,我写这篇笔记的目的在于能够给大家分享我使用最频繁的几个学习正则表达式的网址,这样可以方便大家更加快速的学习和上手应用。

GOLOJO的博客 937

正则表达式的初步学习

   正则表达式可谓是一个轻量级的技术,不可少也不可无~ 想学习之际,在张子阳博客中找到了一片关于正则表达式比较详细的文章,写得易懂还有大量的例子说明。所以学习一下,每天分段摘录一下~~ 以后忘记了可以上来看看学习巩固下。  原文地址:  http://www.tracefact.net/Misc/Regular-Expression-Tutorial.aspx  里面还有ptf的文档

快乐乔巴的专栏 673

Regular Expression正则表达式

为您收集了常用的正则表达式(Regular Expression),程序开发中,经常用到的正则表达,方便您快速使用,节省宝贵的时间,提高程序开发效率,以下正则表达式经过多次测试,并不断增加,因为不同程序或工具的正则表达式略有区别,大家可以根据需要进行简单修改使用。正则表达式有多种不同的风格。用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

云博客_资源宝分享 1044

regular expression

1.3.2.1 Search patternsThe characters in the following table have special meaning only in search patterns: CharacterPattern.Match any single character except newline. Can match newline in awk. *Match any number (or none) of the single character that immedi

fishriver的专栏 3245

关联-正则表达式(Regular Expression Extractor)

在脚本录制时,服务器返回给客户端的数据,当再次执行脚本时,服务器返回最新的数据给客户端,导致录制时服务器返回的数据不再生效,需要在脚本中关联到服务器返回的最新数据,以便后续使用 1.关联的添加方式 在需要获取服务器返回最新数据的请求下–>右键–>后置处理器–>正则表达式 2.正则表达式的介绍 Apply to :应用范围 1)Main sample and sub-sampl...

weixin_43809249的博客 1377
上一篇: GOF 23 设计模式之 备忘录模式(Memento)
下一篇: 阿里云服务器MySql的安装
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值