如果你感到这篇文章对您有所帮助,那请您给我一个免费的赞吧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. Blazor组件自做三 : 使用JS隔离封装ZXing扫码

    Blazor组件自做三 : 使用JS隔离封装ZXing扫码 本文基础步骤参考前两篇文章 Blazor组件自做一 : 使用JS隔离封装viewerjs库 Blazor组件自做二 : 使用JS隔离制作手写 ...

  2. Git---git的常用操作

    git三种状态的转换 git状态切换时的常用命令 1. git管理工作目录 git init # 会增加.git文件夹 2. git的三种状态 工作区 暂存区 本地仓库 3. 提交到暂存区 git a ...

  3. Dart语言基础

    文章目录 前言:dart语言简介 一.变量 1.1.类型推导 1.2.默认值 1.3.Final 和 const修饰符 二.内建类型 2.1.数据类型 2.2.集合的相关操作 三.函数 3.1.函数的 ...

  4. python解释器安装与使用

    Python解释器安装与使用 首先了解下python是由'龟叔' 也就是右边这位和蔼的大叔叔 全名'Guido van Rossum'在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. ...

  5. QT-进制转换计算器

    适合初学者练手 用QT做的一个进制转换工具,主要涉及数据类型转换.//后面再加上基本的计算. Github地址:https://github.com/wsdassssss/Calculate.git ...

  6. window 的简单使用

    window 的延迟加载 js代码 window的原始用法 (缺点 : 只能使用一次) window.onload = function() { var btn = document.querySel ...

  7. 小米路由器3G R3G 刷入Breed和OpenWrt 20.02.2 的记录

    小米 R3G 参数 Architecture: MIPS Vendor: Mediatek Bootloader: U-Boot System-On-Chip: MT7621 family CPU/S ...

  8. GO语言学习——运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自 ...

  9. 数据结构篇(2) ts实现单链表

    interface NodeItem { prev: NodeItem | null next: NodeItem | null data: any } class NodeItem { prev: ...

  10. Windows下搭建redis 哨兵环境

    从 https://github.com/tporadowski/redis/releases 下载windows版的redis,自行下载解压. 关于哨兵模式的讲解,强烈推荐 [深入学习redis(4 ...