正则表达式

10 篇文章 0 订阅
9 篇文章 0 订阅

正则表达式是程序员的神技


1、正则表达式的作用

正则表达式天生就有一种让人毛骨悚然的感觉,看起来还无逻辑,事实真的是这样吗?

正则表达式最开始是用来描述神经系统的,是一种数学模型的表达式,后来被引入IT行业。

这里写图片描述

1.1、正则表达式的三个作用:

1.这称为数据验证。可以测试字符串是否包含正则表达式描述的模型。

2.字符串修改。我们可以在待修改的字符串中找到所有符合正则表达式模型的部分,并且删除或者修改成指定的内容。

3.数据提取。我们可以在带提取的字符串中找到正则表达式模型表示的部分,并且将其提取出来

正则表达式的这三个作用在生物学中就有了,可以找到特定结构的神经结构,并且生物大神们可以结合机器就神经结构进行提取,修改。
现在这些作用都使用到了IT上了。


1.2、正则表达式和IDE的Ctrl+F的故事:

几乎100%的IED都会有Ctrl+F功能,可以找到文件中所有指定的内容,并且可以选择替换成特定的文本,这些都是正则做的。

2、计算机世界的正则表达式

正则表达式有3种类型,不同的计算机语言、软件支持不同的正则表达

式。并且,基于正则表达式,编程语言的不同函数具有不同的功能。

比如数据验证,内容提取、内容修改等。

2.1、正则表达式分类

既然正则表达式3种类型,那么我们就要了解这3钟类型的正则表达式是怎么回事,在具体的编程语言或者软件的时候,就可以方便使用了。

分类如下:

1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx  简称 BREs)

2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)

3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

4、高级正则表达式 ARE。

BRE和ERE到底有什么区别?其实仅仅是元字符的不同,在BRE方式中,只承认^ 、$、 . 、[ 、] 、*这些是元字符,所有其他的字符都被识别为文字字符。而ERE中,则添加了(、 ) 、{ 、} 、?、 + |、等元字符(及其相关功能)

对于(、)、?、+、|,BRE和ERE区别如下:

(1)BRE:
默认情况下(、)、?、+、|都只是普通字符,在其前面加反斜杠\就变成元字符。

\(\)
\?
\+
\|

(2)ERE:
任何元符号前面加上反斜杠反会使其被当作文字字符来处理。

\$表示$
\^表示^
\\表示\

PHP支持ERE,那么我们只要知道PHP的元字符有哪些,就可以方便编写正则表达式了。

POSIX基本正则表达式和扩展正则表达式的比较
BRE与ERE的差异
正则表达式说明

2.2、正则表达式组成

正则表达式包含以下部分:

界定符
原子 
量词
边界控制
模式单元
修正符  i、I、g、G、s、S等

2.2.1、界定符

界定符/:正则表达式的界定符 /表示正则表达式开始和结束都是用 / 表示

例子:
/0-9/ 表示数字 0 到 9
/a-z/ 表示小写的a-z

2.2.2、原子

原子分为可见原子、不可见原子。原子也可以称为文字字符

可见原子:

数字0-9
字符a-z,A-Z
还有其他一切可以看见的字符,包括语言符号

不可见原子:

制表符 \t 
空格
换行 \n
其他看不见的符号

2.2.3、元字符

元字符(Metacharacter)是拥有特殊含义的字符:

是常用元字符的总结:

. 匹配除换行符之外的任意单个的字符 [^\n],JavaScript中是-
\d      匹配任意一个十进制数字[0-9]
\D     匹配任意一个非十进制数字[^0-9]
\s      匹配一个不可见原子
\S      匹配一个可见原子
\w     匹配任意一个数字,字母,或下滑线 [0-9A-Za-z_]
\W    匹配任意一个非数字,字母,或下滑线 [0-9A-Za-z_]

原子的筛选方式:

abc|123  匹配 abc或者123,和(abc)|123表达式是一样的含义

[abcd]  abcd中的任意一个

[^abcd]  表示除了a,b,c,d以外的任何字符

[0-9a-zA-Z]  匹配 0-9 z-a  A-Z中的任意一个字符。也可以写[0-3a-sA-F]这样的

2.2.4、量词

? 零次或者一次
+ 至少出现一次
*  任意次
{n} 表示前面的原子恰好出现n次
{n,} 表示前面的原子至少出现n次
{n,m} 表示前面的原子出现n次到m此之间,含第n 和m次

2.2.5、边界控制

^  必须以前面的原子或者原子集合开始
$ 必须以前面的原子或者原子集合结束

2.2.6、模式单元

模式单元是(),作用是里面是一个子正则


3、在线工具

http://tool.chinaz.com/regex/

正则表达式搜索扩展代替Chrome的CTRL + F 在键入时动态突出显示网页上的正则表达式匹配项。使用ENTER和SHIFT + ENTER或单击鼠标中的箭头来循环进行匹配。通过扩展选项自定义突出显示和文本颜色。您将需要刷新任何已经打开的选项卡,以加载内容脚本 2015年10月27日:在选项页面7/13/2016中添加了不区分大小的搜索选项:为清单7/30/2016添加了“ file:// * / *”扩展名:使用pull request https:// github更新了程序包 com / rogershen / chrome-regex-search / commit / c5ab1bbc33a1ec8ddd254b640b8786cc621e6644 9/2/2016:更新了带有请求请求的程序包https://github.com/rogershen/chrome-regex-search/pull/6此更新将搜索历史添加到了用最右边的按钮显示和隐藏的弹出窗口9/23/2016:将不区分大小的搜索选项更改为在弹出窗口上的切换1/24/2019:更新了带有两个拉取请求的包,以启用复制命令并自动关注父元素。此扩展是开放源代码:https://github.com/rogershen/chrome-regex-search如果您有任何问题,请向https://github.com/rogershen/chrome-regex-search/issues报告键盘快捷键: ENTER:选择下一个正则表达式匹配SHIFT + ENTER:选择上一个正则表达式匹配要设置键盘快捷键以打开弹出窗口:在浏览器中,转到chrome:// extensions /查找“ Chrome Regex Search”,然后点击相应的框,输入您的自定义命令(即CTRL + SHIFT + F)现在,只要您想打开弹出窗口,只需输入自定义命令即可。右键单击图标并选择“选项”,或转到chrome:// extensions /,然后单击“ Chrome Regex搜索”行中的“选项”,即可找到扩展选项。 支持语言:English (United States)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值