如果你感到这篇文章对您有所帮助,那请您给我一个免费的赞吧QWQ!

如果想要深入理解什么是正则表达式,请购买教材《形式语言与自动机》,相信学完它之后一定会让你更加理解正则表达式!

1.你的同事现在正在为甲方提供的要求而犯愁。甲方有个要求,那就是产生一个只含有a和b的字符串,但是末尾必须是aaba或babb。

虽然你的同事觉得这个代码可以写,但是他想把代码写的简单点,可是他没有学过正则表达式,真是愁死人了!

如果你学会了正则表达式,那你就可以轻松的帮到他。

2.你想知道网址是怎么生成的吗?每次看到那一长串的东西就觉得头疼。。。学会正则表达式,就不用担心这个了。

不多废话了,咱们开始说说啥是正则表达式吧!

什么是正则表达式?正则表达式就是个句子。很好理解吧。

但是想要写出一个句子,并不是随心所欲的!在语文中,“我吃了饭”可千万不能写成“饭吃了我”,也不能写成“我吃了吃饭吃了”

同样,要写出正则表达式,也是需要遵循一定的规则的,这个呢就是正则语法。不过在这里我们先不去考虑语法,毕竟小孩子学会说话不是去记语法学会的吧!

通过对语法的研究,我们可以发现,只需要三种操作,便可以生成正则表达式!太方便了家人们,直接来吧。

第一个操作:连接,没有符号。“我吃了饭”这句话实际上就是‘我吃’‘了饭’的连接。在计算科学中,我们用x::=yz来表示,右边是两个句子的连接,左边是新句子。

第二个操作:重复,用*表示。x::=y*表示y可以重复多次出现,也可以直接不出现。举个例子:y=‘吃’,那么句子“吃吃吃吃吃吃吃”和句子“ ”都可以是x。

第三个操作:选择,用|表示。x::=y|z表示x既可以是y,也可以是z。

只要这三种操作,就可以写出任何正则表达式。

简单吧?然而事情并没有这么简单。。。现实中的正则表达式有的往往会很复杂,你只用这三个操作写,人家直接大呼我看不懂,你自己还容易写错,那多不好!

所以我们还需要一些辅助的方法和技巧。在这里给出一个网址供大家参考:最全的常用正则表达式大全_正则表达式_脚本之家 (jb51.net)

不过,这网址里面给的东西太多了,这里还是拿出几个比较重要的说一下:

x::=y?  问号是个神奇的符号,不过在这里,它表示x是y或者x是空,和疑问的关系不大哈哈哈。

x::=y+ 这个是 * 符号的高阶版,表示x是至少出现一次的y,y不能不出现了!(具体请学习离散数学的闭包)

x::=[a-z]表示x可以是字符a到字符z的所有字符。这个很常用,毕竟表示一堆字符的时候总不能你是一个一个一个列出来吧。

最后,分享一个网站,打开看看吧。RegExr:学习,构建和测试正则表达式

初步了解认识正则表达式(Regex)的更多相关文章

  1. C#正则表达式Regex常用匹配

    使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是 ...

  2. C#正则表达式Regex类的用法

    C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...

  3. C#正则表达式Regex类

    C#正则表达式Regex类的使用 C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间 ...

  4. (四)boost库之正则表达式regex

    (四)boost库之正则表达式regex 正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼 头文件: #include <boost/regex.hpp> 1.完全匹配 std ...

  5. boost 正则表达式 regex

    boost 正则表达式 regex   环境安装 如果在引用boost regex出现连接错误,但是引用其他的库却没有这个错误,这是因为对于boost来说,是免编译的,但是,正则这个库 是需要单独编译 ...

  6. 请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 (黄色部分即02-236-9655/9659 ) ( 测试面试题)

    请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 答: package test1; import java.uti ...

  7. Python 正则表达式(RegEx)

    版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...

  8. C#正则表达式Regex类使用

    作为文本处理的利器——Perl语言对正则表达式的最强大支持起到了重要的作用,正因为如此,许多其他语言在加入正则表达式引擎的时候都会或多或少的兼顾perl风格的正则表达式,开发出相应的引擎.本人使用pe ...

  9. Golang 正则表达式Regex相关资料整理

    Golang 支持的正在表达式是 https://github.com/google/re2/wiki/Syntax 注意这里提示 NOT SUPPORTED的。 工具 一些测试正则表达式的工具 推荐 ...

随机推荐

  1. Qt 实现配置 OpenCV 环境,并实现打开图片与调用摄像头

    一.说明 所用QT版本:5.9.1 电脑配置:win10,64位系统 调用的是编译好的:OpenCV-MinGW-Build-4.1.0(稍后放链接) 在大学期间,由于项目需求需要用到QT+openc ...

  2. Spring-Bean依赖注入(引用数据类型和集合数据类型)

    为什么使用spring依赖注入详见–>依赖注入分析 1.创建实体类User类 package com.hao.domain; public class User { private String ...

  3. /application/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

    在启动/usr/local/zabbix/sbin/zabbix_server 时报错如下 此时需要配置一个软连接指向该位置. ln -s /usr/local/mysql/lib/libmysqlc ...

  4. Python 速通爆肝、列表推导式、生成器、装饰器、生命游戏

    列表推导式.赋值.切片(替换.插入).字符串处理与判断.enumerate().格式化字符串.读写文件.global 关键字.字符串startswith().类与对象.生成器.装饰器.Self.*ar ...

  5. SimpleDateFormat类的安全问题,这6个方案总有一个适合你

    摘要:你使用的SimpleDateFormat类还安全吗?为什么说SimpleDateFormat类不是线程安全的?带着问题从本文中寻求答案. 本文分享自华为云社区<[高并发]SimpleDat ...

  6. brup去除mozilla等无用数据包的方法

    方法一 针对火狐浏览器的解决方法 1.在firefox(火狐浏览器)地址栏中输入: about:config 2.然后出现搜索框,搜索以下内容,双击将它设置成false. network.captiv ...

  7. Python paho-mqtt使用心得

    一.概述 一)基本概念 使用回调处理从MQTT代理返回的数据,要使用回调需要先定义回调函数然后将其指派给客户端实例(client). 例如: # 定义一个回调函数 def on_connect(cli ...

  8. Java指令重排序在多线程环境下的应对策略

    一.序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响:在多线程环境下,指令重排会给程序带来意想不到的错误. 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方 ...

  9. jmeter脚本编写

    jmeter脚本编写 一.http协议接口编写注意事项 1.请求体为json格式:一定要写请求头Content-Type:application/json 2.json格式文本 2.1 key-val ...

  10. Bugku练习题---Web---计算器

    Bugku练习题---Web---计算器 flag:flag{8b4b2f83db2992d17d770be1db965147} 解题步骤: 1.观察题目,打开场景 2.场景打开后发现是一个验证码界面 ...