
- 代码简写
- regex、regexp或RE
- 行业归属
- 计算机科学
- 作 用
- 用来检索、替换那些符合某个模式(规则)的文本
- 中文名
- 正则表达式
- 外文名
- Regular Expression
- 别 称
- 规则表达式
-
正则表达式验证Ip地址(绝对正确)
2016-02-04 16:39:51之前一直不太会写正则表达式,很多要用到正则表达式的都直接百度,像上次要用正则表达式验证是否是合法的ip地址,然后就上网找,结果就是没找到一个对的,今天就为大家贡献一下,写个对的,并做一下解析。...之前一直不太会写正则表达式,很多要用到正则表达式的都直接百度,像上次要用正则表达式验证是否是合法的ip地址,然后就上网找,结果就是没找到一个对的,今天就为大家贡献一下,写个对的,并做一下解析。(建议大家还是去看书去规范的学一下,不要直接百度,不然都是坑)。
iPv4的ip地址都是(1~255).(0~255).(0~255).(0~255)的格式
我这里的写法没有考虑两种情况,一是172.00.01.3这种,前面以零开头,或者多个零的这种情况,二是本网络地址,如果想支持,可根据下面的解释进行扩展。
下面给出相对应的正则表达式:
"^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"
上面的一个不漏就是正确的验证ip的正则表达式,简单的讲解一下
\d表示0~9的任何一个数字
{2}表示正好出现两次
[0-4]表示0~4的任何一个数字
| 的意思是或者
( )上面的括号不能少,是为了提取匹配的字符串,表达式中有几个()就表示有几个相应的匹配字符串
1\\d{2}的意思就是100~199之间的任意一个数字
2[0-4]\\d的意思是200~249之间的任意一个数字
25[0-5]的意思是250~255之间的任意一个数字
[1-9]\\d的意思是10~99之间的任意一个数字
[1-9])的意思是1~9之间的任意一个数字
\\.的意思是.点要转义(特殊字符类似,@都要加\\转义)
说到这里应该已经很清楚的知道了上面的正则表达式的意思。
-
正则表达式
2018-07-08 11:15:29一、概念正则表达式()在很多技术领域(如:自然语言处理,数据存储等),正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!
一、概念
正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。
正则表达式目前被集成到了各种文本编辑器/文本处理工具当中
二、应用场景
(1)验证:表单提交时,进行用户名密码的验证。
(2)查找:从大量信息中快速提取指定内容,在一批url中,查找指定url。
(3)替换:将指定格式的文本进行正则匹配查找,找到之后进行特定替换。
三、基本要素
(1)字符类
(2)数量限定符
(3)位置限定符
(4)特殊符号
注意:正则表达式基本是与语言无关的,我们可以结合语言/工具与正则表达式进行文本处理,在后面的博客中,我将使用grep来进行验证。(grep是一款Linux下按行匹配文本的工具,如下,使我们常使用的两个选项)
-E:使用扩展正则匹配
--color:将匹配得到的内容进行语法高亮
1.字符类
举例如下:
例1:
注意:1.grep采用的贪心匹配,它会匹配当前行中的所有匹配内容
2.echo $?表示是否匹配成功(如果成功返回值为0,不成功返回值为1)
例2:
例3:
例4:
例5:
2.数量限定符
举例如下:
例1:
例2:
由此,我们可以看出,“前面的单元”默认是指?或+前面的字符
例3:
例4:
例5:
例6:
注意:该结果为匹配失败,在相关文档中并未出现,应该啊是错误或者废弃的用法
例7:
3.位置限定符
举例如下:
例1:
例2:
例3:
例4:
例5:
例6:
4.特殊符号
举例如下:
假如我们去掉-E选项,会有什么现象呢?
此时,不难发现,去掉-E选项之后没有进行正常的正则匹配,这种现象需要我们引入如下的两个概念!
5.基本正则表达式&扩展正则表达式
区别:正则表达式的扩展正则(Extended规范)和基本正则(Basic规范)下,有些字符
应该解释为普通字符,要表示上述特殊含义则需要加“\”转义字符。反之,在扩展规范下,
应被理解为特殊含义,要取其字面值,也要对其进行“\”转义。
因此,grep工具带上-E选项,表示使用扩展正则来进行匹配,若没有该选项,则表示使用基准正则来进行匹配。
对于上述的问题,我们举例如下:
例1:
例2:当目标字符串当中本身就包含了
字符,要想进行正则匹配,应该这样做:
例3:
5.其他普通字符集及其替换
举个例子:
综上,正则表达式有以下三个分类:
(1)基本正则表达式:Basic即BPEs
(2)扩展正则表达式:Extended即EREs
(3)Perl的正则表达式:PREs
因此,当grep指令不跟任何参数时,表示要使用BREs,后面跟“-E”表示使用EREs,后面跟“-P”参数,表示使用PREs
四、贪婪模式与非贪婪模式
1.贪婪模式:正则表达式匹配时,会尽量多的匹配符合条件的内容
举例如下:
注意:grep默认采用贪婪匹配,可能会对我们的测试结果造成干扰,大家可以上网使用“正则在线转换工具”进行测试
2.非贪婪模式:正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)
举例如下:
五、零宽断言
1.所谓断言,是用来声明一个应该为真的事实。在正则表达式中,只有当断言为真时才会继续进行匹配。
2.零宽断言:像用于查找某些内容之前或者之后的东西,其中一些特殊字符如“\b、^、$”等用于指定一个位置,这个位置应满足一定的条件。
3.分类:
(1)零宽度正预测先行断言(?=exp)
它断言自身出现的位置之后能匹配的表达式exp。如:\b\w+(?=ing\b),表示匹配以ing结尾的单词的前面的部分(除ing以外的部分)。当我们要查找“I'm singing while you're dancing.”时,它会匹配sing和danc
举例如下:
(2)零宽度正回顾后发断言(?>=exp)
它断言自身出现的位置的前面能匹配的表达式exp。如:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除er以外的部分),例如:在查找“reading a book”时,它匹配ading
举例如下:
六、简单练习
1.手机号码
2.非零的正整数
3.非零开头的最多带两位小数的数字
4.由数字和26位字母组成的字符串
5.QQ号,从10000开始
6.IP地址
\d+\.\d+\.\d+\.\d+
7.判断账号是否合法
^[a-zA-Z0-9][a-zA-Z0-9_]{4,15}$
8.日期格式
^\d{4}-\d{1,2}-\d{1,2}
正则表达式的学习就到这里结束啦,如果有小伙伴没有看明白的,可以上网查询正则的更多知识点!
-
hive 正则表达式详解
2016-04-09 18:56:22hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。1.regexp语法: A REGEXP B 操作类型: strings 描述: 功能与RLIKE相同...项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。
1.regexp
语法: A REGEXP B
操作类型: strings
描述: 功能与RLIKE相同select count(*) from olap_b_dw_hotelorder_f where create_date_wid not regexp '\\d{8}'
与下面查询的效果是等效的:
select count(*) from olap_b_dw_hotelorder_f where create_date_wid not rlike '\\d{8}';
2.regexp_extract
语法: regexp_extract(string subject, string pattern, int index)
返回值: string
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。hive> select regexp_extract('IloveYou','I(.*?)(You)',1) from test1 limit 1; Total jobs = 1 ... Total MapReduce CPU Time Spent: 7 seconds 340 msec OK love Time taken: 28.067 seconds, Fetched: 1 row(s)
hive> select regexp_extract('IloveYou','I(.*?)(You)',2) from test1 limit 1; Total jobs = 1 ... OK You Time taken: 26.067 seconds, Fetched: 1 row(s)
hive> select regexp_extract('IloveYou','(I)(.*?)(You)',1) from test1 limit 1; Total jobs = 1 ... OK I Time taken: 26.057 seconds, Fetched: 1 row(s)
hive> select regexp_extract('IloveYou','(I)(.*?)(You)',0) from test1 limit 1; Total jobs = 1 ... OK IloveYou Time taken: 28.06 seconds, Fetched: 1 row(s)
hive> select regexp_replace("IloveYou","You","") from test1 limit 1; Total jobs = 1 ... OK Ilove Time taken: 26.063 seconds, Fetched: 1 row(s)
3.regexp_replace
语法: regexp_replace(string A, string B, string C)
返回值: string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。hive> select regexp_replace("IloveYou","You","") from test1 limit 1; Total jobs = 1 ... OK Ilove Time taken: 26.063 seconds, Fetched: 1 row(s)
hive> select regexp_replace("IloveYou","You","lili") from test1 limit 1; Total jobs = 1 ... OK Ilovelili
参考链接:
- https://www.iteblog.com/archives/1639.html hive字符串处理函数,比较全
-
中文正则表达式匹配-正则中文匹配
2018-05-30 17:13:44原文链接:...\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下匹配中文字符的正则表达式: [\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双...原文链接:http://caibaojian.com/zhongwen-regexp.html
这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。
\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
或许你也需要匹配双字节字符,中文也是双字节的字符
匹配双字节字符(包括汉字在内):[^\x00-\xff]
注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
更多常用正则表达式匹配规则:
英文字母:[a-zA-Z] 数字:[0-9]
匹配中文,英文字母和数字及_:
//code from http://caibaojian.com/zhongwen-regexp.html ^[\u4e00-\u9fa5_a-zA-Z0-9]+$
同时判断输入长度:·
[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$
1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:
^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$
其中:
^ 与字符串开始的地方匹配
(?!_) 不能以_开头 (?!.*?_$) 不能以_结尾 [a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线
$ 与字符串结束的地方匹配
放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$" (或者:@"^(?!_)\w*(?<!_)$" 或者 @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ " )
2、只含有汉字、数字、字母、下划线,下划线位置不限:
^[a-zA-Z0-9_\u4e00-\u9fa5]+$
3、由数字、26个英文字母或者下划线组成的字符串
^\w+$
4、2~4个汉字
@"^[\u4E00-\u9FA5]{2,4}$";
5、
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
用:(Abc)+ 来分析: XYZAbcAbcAbcXYZAbcAb
来源:前端开发博客 -
正则表达式与扩展正则表达式
2018-04-03 11:32:52后来了解到sed是基础的正则表达式,而我用的扩展正则表达式以及正则表达式的扩展,很容易混淆,选择记录一下 BRE: basic regrular expression ERE: extended regrular expression BRE ERE 含义 ^$ ^$ ... -
MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询
2019-04-15 21:03:27文章目录MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询1、如何使用,语法2、regexp 模式3、几个demo MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询 1、如何使用,语法 select * from 表名 where 字段... -
前端---js(自学笔记17)(正则表达式,正则语法,字符串与正则表达式、邮件正则)
2020-07-20 22:04:24正则表达式简介: 正则表达式用于定义一些字符串的规则。 计算机可以根据这些正则表达式,来检查一个字符串是否符合规则。或者将字符串符合规则的内容提取出来。 创建正则表达式:语法:var 变量 =new RegExp(... -
常用js正则表达式 Javascript正则表达式实战手册
2018-08-13 00:22:33最近做了几个项目,发现正则表达式用得越来越多了。我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的手册。说白... -
Java进阶(九)正则表达式
2015-07-31 14:45:13java正则表达式 序 由于项目中使用到了利用正则表达式进行表单的校验,回想一下正则表达式的内容,忘得也差不多了,俗话说:“温故而知新,可以为师矣”。今天就简单的温故一下正则表达式,希望可以获得新的收获。 ... -
jmeter 正则表达式和正则表达式提取响应结果
2019-08-23 16:12:10一、正则表达式 假如我们不知道我们匹配的是否正确,那么可以通过一些网站,比如说:在线正则表达式测试 **一般在jmeter里写正则表达式是 :匹配条件+约束条件,就像上图的,约束了11位字符 二、正则表达式提取... -
基本正则表达式与扩展正则表达式
2017-07-30 15:18:36基本正则表达式与扩展正则表达式基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已。(对,就是这么简单)BRE:只有^$.[]* 是元字符ERE:^$.[]+(){}?|都是元字符ERE中新加的字符在... -
史上最全的正则表达式-匹配中英文、字母和数字
2017-08-29 20:31:28在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、匹配... -
正则表达式-常见正则表达式符号和特殊字符
2019-02-12 14:14:45表 1-1 常见正则表达式符号和特殊字符 表 示 法 描 述 正则表达式示例 符号 literal 匹配文本字符串的字面值 literal foo re1|re2 匹配正则表达式 re1 或者 re2 foo|bar . 匹配任何字符(除了\n 之外) b.... -
Python正则表达式(含正则表达式速查表)
2018-04-25 12:13:251、正则表达式的优点正则表达式能够匹配只要你能描述出来的字符串,对于普通的文本中常用的一些关键词,如果想匹配某种模式很适合用而不是通过普通的contains这种是否含有等匹配。2、python正则表达式速查表3、... -
正则表达式在PLSQL中的使用(附正则表达式语法)
2018-10-08 14:48:11PLSQL中与正则表达式相关的运算函数主要有以下四个: REGEXP_LIKE:返回指定字符串是否符合给定的正则表达式; REGEXP_SUBSTR:返回在指定字符串中截取出的符合给定正则表达式的子串; REGEXP_INSTR:... -
正则表达式 价格正则表达式 非负整数正则表达式 正整数正则表达式
2014-10-22 17:24:51正则表达式 价格正则表达式 非负整数正则表达式 正整数正则表达式 //判断是否为价格:校验的价格为大于或等于0的数,最多有两位小数.如果是则返回true,否则返回false. function isPrice(price){ var reg = /... -
正则表达式 正则表达式匹配年月
2018-06-13 11:42:30正则表达式 注意^和$的使用 ^表示开始 严格匹配按规定的正则开始 否则返回false$表示结束 严格匹配按规定的正则结束 否则返回false只匹配年: /^\d{4}$/ 只匹配年-月:/^\d{4}-((0([1-9]))|(1(0|2)))$/只匹配年... -
关于正则表达式,好像java代码有正则表达式,sql也有正则表达式
2017-02-21 17:19:201)sql中有正则表达式 [^-]表示不为-的内容 如1-1-1,不为-的内容为 1 1 1 2)java中有正则表达式 [^a-z]匹配任何不在“a”到“z”范围内的任意字符。 不知道某个正则表达式是什么意思怎么办? 1)去百度百科,... -
正则表达式学习:JAVA使用正则表达式递归校验JSON格式数据
2019-01-03 19:09:55由于工作中用到正则表达式不多,一直没有好好学习正则表达式。在网上找到了原版的精通正则表达式(第三版)电子版,抽时间详细学习,下面对最近学到的做个总结。 最近在进行安全检查漏洞修补,在做XSS攻击过滤器时,... -
正则表达式及正则表达式在notepad++中的运用
2018-10-16 09:48:16一 正则表达式语法 先略,以后补充 二 正则表达式在notepad++中的运用 有时候,我们需要把到手的数据做一些处理,比如下面所示,需要将 “_version_”字段及其对应的值全部去掉,该怎么处理? 处理方法... -
判断正整数的正则表达式
2018-02-24 10:48:08正数的正则表达式(包括0,小数保留两位):^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*)|0)$ 正数的正则表达式(不包括0,小数保留两位):^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$ 正... -
js正则表达式转换成C#正则表达式的网站
2017-03-07 15:47:39这两天用到正则表达式,因为正则表达式基本上都是在js处理,而我的程序需要在c#里面处理,但是js跟C#又有点区别,但是我们有一个非常好的网站可以自动将js正则表达式转换成c#的正则表达式,网站链接为... -
JavaScript进阶教程(7)-正则表达式
2020-10-24 23:07:20正则表达式 了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于匹配规律规则的表达式,正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在... -
正则表达式的使用和正则表达式中有特殊含义的符号
2018-07-21 11:58:49Python ----》 re模块 处理正则表达式 re.findall(pattern,string) 功能 : 使用正则表达式匹配字符串 参数 : pattern 正则表达式 string 目标字符串 返回值 : 一个列表 匹配到的所有内容 元字符 1、元字符... -
Java正则表达式总结 --- 常用的Java正则表达式需求总结
2017-05-19 18:06:56正则表达式总结 --- 常用的正则表达式需求总结 1、正则表达式 2、常用正则表达式需求总结 3、结束语 待续。。。
-
数学建模的算法 和程序
-
姚前:算法经济与算法监管
-
Node.js来一打 C++ 扩展.源码
-
[vue-cli]不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么?
-
基础的深度学习实验研究结果汇总笔记
-
备战2021软考网络规划设计师历年真题套餐
-
thinkphp5.1博客后台实战视频
-
QASystemOnMedicalGraph该项目是基于医疗领域知识图谱的问答系统
-
(新)备战2021软考网络规划设计师终极解密套餐
-
从零开始学python数据分析与挖掘第2章学习笔记
-
[转载] python的短逻辑
-
合工大数据结构实验报告
-
教程keras、tensorflow、paddle、pytorch
-
vue端口号被占用报错npm ERR! @1.0.0 dev: `node build/dev-server.js`
-
WeChat.CRM.SDK,微信开发sdk
-
【数据分析-随到随学】量化交易策略模型
-
Selenium3分布式与虚拟化
-
国家注册渗透测试工程师(Web安全)
-
合工大FPGA实验报告
-
easyCode配置