初步了解认识正则表达式(Regex)
如果你感到这篇文章对您有所帮助,那请您给我一个免费的赞吧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)的更多相关文章
- C#正则表达式Regex常用匹配
使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是 ...
- C#正则表达式Regex类的用法
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
- C#正则表达式Regex类
C#正则表达式Regex类的使用 C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间 ...
- (四)boost库之正则表达式regex
(四)boost库之正则表达式regex 正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼 头文件: #include <boost/regex.hpp> 1.完全匹配 std ...
- boost 正则表达式 regex
boost 正则表达式 regex 环境安装 如果在引用boost regex出现连接错误,但是引用其他的库却没有这个错误,这是因为对于boost来说,是免编译的,但是,正则这个库 是需要单独编译 ...
- 请写出正则表达式(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 ...
- Python 正则表达式(RegEx)
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- C#正则表达式Regex类使用
作为文本处理的利器——Perl语言对正则表达式的最强大支持起到了重要的作用,正因为如此,许多其他语言在加入正则表达式引擎的时候都会或多或少的兼顾perl风格的正则表达式,开发出相应的引擎.本人使用pe ...
- Golang 正则表达式Regex相关资料整理
Golang 支持的正在表达式是 https://github.com/google/re2/wiki/Syntax 注意这里提示 NOT SUPPORTED的。 工具 一些测试正则表达式的工具 推荐 ...
随机推荐
- rem,px,em最大的区别;
px:px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.移动端的分辨率很多.所以px不适用移动端em:em的值不固定:其长度继承父级元素的字体大小rem:相对于根元素htm ...
- CRLF 漏洞学习和工具使用
原理 CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a),操作系统就是根据这个标识来进行换行的.但是如果对输入过滤不严,就会将恶意语句注入 ...
- Java报错:Error creating bean with name 'testController': Injection of resource dependencies failed
报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testCo ...
- Spring的3级缓存和循环引用的理解
此处是我自己的一个理解,防止以后忘记,如若那个地方理解不对,欢迎指出. 一.背景 在我们写代码的过程中一般会使用 @Autowired 来注入另外的一个对象,但有些时候发生了 循环依赖,但是我们的代码 ...
- css3 做出顶边倾斜的 梯形 div
效果图: <html> <head> <meta charset="utf-8"> <title>顶边倾斜的div梯形</ti ...
- 分享一个为Linux创建的任务管理器,看起来就像Windows的任务管理器
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 链接:https://www.linuxmi.com/sysmontask-linux-tas ...
- Mac 系统用mx master3遇到的问题
买 master3 之前上网看到的资料都是夸的不行,提到的问题也都是无足轻重,然而就我个人来说,在 Mac 下实际使用 master3 的感受很糟糕,写这篇文章分享一下遇到的问题,如果有想买的人看到这 ...
- 用js给闺女做了一个加减乘除的html
下班回家用二十分钟给闺女做了一个加减乘除的页面,顺便记录下代码,时间仓促,后期再来修改吧 目录结构 -yq --menu.html --yq.html --yq50.html --yq70.html ...
- 斯坦福NLP课程 | 第12讲 - NLP子词模型
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- MAUI候选版本3发布啦
我们很高兴发布.NET 多平台应用程序UI (.NET MAUI) 候选版本3,这个版本包含一系列新的改进.与以前的候选版本一样,RC3 包含在"上线"支持政策中,这意味着Micr ...