正则表达式 订阅
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。 展开全文
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
信息
代码简写
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:22
    hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个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
    

    参考链接:

    1. 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 通过正则表达式进行匹配查询1、如何使用,语法2、regexp 模式3、几个demo MySQL 正则表达式,MYSQL 通过正则表达式进行匹配查询 1、如何使用,语法 select * from 表名 where 字段...
  • 正则世界,唯我独尊 编写项目的时候,多多少少都有些验证,用的时候费力气去写或者满世界的找需要的资料太麻烦 就在这里进行汇总记录,后续会不断更新不断完善 ...正则表达式之——手机号码验证.
  • 常用js正则表达式 Javascript正则表达式实战手册

    千次阅读 多人点赞 2018-08-13 00:22:33
    最近做了几个项目,发现正则表达式用得越来越多了。我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的手册。说白...
  • 正则表达式简介: 正则表达式用于定义一些字符串的规则。 计算机可以根据这些正则表达式,来检查一个字符串是否符合规则。或者将字符串符合规则的内容提取出来。 创建正则表达式:语法:var 变量 =new RegExp(...
  • 一、正则表达式 假如我们不知道我们匹配的是否正确,那么可以通过一些网站,比如说:在线正则表达式测试 **一般在jmeter里写正则表达式是 :匹配条件+约束条件,就像上图的,约束了11位字符 二、正则表达式提取...
  • Java进阶(九)正则表达式

    万次阅读 2015-07-31 14:45:13
    java正则表达式 序 由于项目中使用到了利用正则表达式进行表单的校验,回想一下正则表达式的内容,忘得也差不多了,俗话说:“温故而知新,可以为师矣”。今天就简单的温故一下正则表达式,希望可以获得新的收获。 ...
  • 正则表达式的基本语法及使用正则表达式完成字符串的检索、替换、查找。
  • 基本正则表达式与扩展正则表达式

    千次阅读 2017-07-30 15:18:36
    基本正则表达式与扩展正则表达式基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已。(对,就是这么简单)BRE:只有^$.[]* 是元字符ERE:^$.[]+(){}?|都是元字符ERE中新加的字符在...
  • 表 1-1 常见正则表达式符号和特殊字符 表 示 法 描 述 正则表达式示例 符号 literal 匹配文本字符串的字面值 literal foo re1|re2 匹配正则表达式 re1 或者 re2 foo|bar . 匹配任何字符(除了\n 之外) b....
  • 1、正则表达式的优点正则表达式能够匹配只要你能描述出来的字符串,对于普通的文本中常用的一些关键词,如果想匹配某种模式很适合用而不是通过普通的contains这种是否含有等匹配。2、python正则表达式速查表3、...
  • 史上最全的正则表达式-匹配中英文、字母和数字

    万次阅读 多人点赞 2017-08-29 20:31:28
    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、匹配...
  • PLSQL中与正则表达式相关的运算函数主要有以下四个: REGEXP_LIKE:返回指定字符串是否符合给定的正则表达式; REGEXP_SUBSTR:返回在指定字符串中截取出的符合给定正则表达式的子串; REGEXP_INSTR:...
  • 正则表达式 价格正则表达式 非负整数正则表达式 正整数正则表达式 //判断是否为价格:校验的价格为大于或等于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)))$/只匹配年...
  • 1)sql中有正则表达式 [^-]表示不为-的内容 如1-1-1,不为-的内容为 1 1 1 2)java中有正则表达式 [^a-z]匹配任何不在“a”到“z”范围内的任意字符。 不知道某个正则表达式是什么意思怎么办? 1)去百度百科,...
  • 由于工作中用到正则表达式不多,一直没有好好学习正则表达式。在网上找到了原版的精通正则表达式(第三版)电子版,抽时间详细学习,下面对最近学到的做个总结。 最近在进行安全检查漏洞修补,在做XSS攻击过滤器时,...
  • 正则表达式语法 先略,以后补充     二 正则表达式在notepad++中的运用 有时候,我们需要把到手的数据做一些处理,比如下面所示,需要将 “_version_”字段及其对应的值全部去掉,该怎么处理? 处理方法...
  • 这两天用到正则表达式,因为正则表达式基本上都是在js处理,而我的程序需要在c#里面处理,但是js跟C#又有点区别,但是我们有一个非常好的网站可以自动将js正则表达式转换成c#的正则表达式,网站链接为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 236,571
精华内容 94,628
关键字:

正则表达式