如果你感到这篇文章对您有所帮助,那请您给我一个免费的赞吧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. python函数基础算法简介

    一.多层语法糖本质 """ 语法糖会将紧挨着的被装饰对象名字当参数自动传入装饰器函数中""" def outter(func_name): ...

  2. /dev/dm-0 ....(/dev/mapper机制)

    查看/dev下时候,会看到dm-xx的设备,那么这些设备到底是什么设备呢, Device Mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制, 在该机制下,用户可 ...

  3. springboot jar包方式部署

    打好jar包后上传到 linux 执行命令 java -jar /root/vhr-web-0.0.1-SNAPSHOT.jar > /root/log.txt & 1.java -ja ...

  4. jquery版本的ajax请求

    首先引入 <script src="https://code.jquery.com/jquery-3.6.0.js"></script>   $ 和 jqu ...

  5. [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇

    [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 目录 [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 1. ...

  6. sql语句——DML

    DML:增删改表中数据 1. 添加数据: * 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); * 注意: 1. 列名和值要一一对应. ...

  7. 深入浅出聊Taier—大数据分布式可视化DAG任务调度系统

    导读: 上周,袋鼠云数栈全新技术开源规划--DTMO(DTstack Meetup Online)的第一场直播圆满完成.袋鼠云数栈大数据开发专家.Taier项目主导人偷天为大家带来了<Taier ...

  8. 真实本人亲测Elasticsearch未授权访问漏洞——利用及修复【踩坑指南到脱坑!】

    如要转载请注明出处谢谢: https://www.cnblogs.com/vitalemontea/p/16105490.html 1.前言 某天"发现"了个漏洞,咳咳,原本以为这 ...

  9. 【Java分享客栈】我曾经的两个Java老师一个找不到工作了一个被迫转行了

    前言 写这篇文章的初衷主要是最近发生了两件事,让我感慨良多,觉得踏入这个行业的初始,有些事情就应该长远考虑,这样对职业发展才更有利,仅仅停留在技术的追求上固然能壮大自身,可逆水行舟的程序员们终究会面临 ...

  10. java中的stream是啥?

    函数式编程的执行是惰性的,按顺序真正执行的时候才会执行相应的代码.方法: 函数式编程是安全的,用的是monad架构 1 public class StreamTest { 2 3 public sta ...