正则_正则表达式 - CSDN
正则 订阅
正则是一个汉语词汇,拼音为zhèng zé,基本意思是正其礼仪法则;正规;常规;正宗等。出自《楚辞·离骚》、《插图本中国文学史》、《东京赋》等文献。 展开全文
正则是一个汉语词汇,拼音为zhèng zé,基本意思是正其礼仪法则;正规;常规;正宗等。出自《楚辞·离骚》、《插图本中国文学史》、《东京赋》等文献。
信息
性    质
汉语词汇
外文名
zhèngzé
出    自
《楚辞·离骚》等
中文名
正则
正则词语释义
拼音:zhèngzé1.正其礼仪法则。 [1]  汉·张衡 《东京赋》:“辩方位而正则,五精帅而来摧。”2.正规;常规。《西游补》第一回:“七龄孔子 ,帐中鸣蟋蟀之音;二八曾参 ,阶下拜荔枝之献。胡为乎不讲此正则也?”茅盾 《追求》八:“一个月前,我还想到五年六年甚至十年以后的我,还有一般人所谓想好好活下去的正则的思想。”3.犹正宗。郑振铎 《插图本中国文学史》第四九章一:“差不多要在元末明初的时候,我们才见到正则的南曲作家的出现。”参见“ 正宗 ”。4、《楚辞·离骚》篇有“皇揽揆余於初度兮,肇锡余以嘉名;名余曰正则兮,字余曰灵均”之句。马茂远《楚辞选》注:“屈原名平,字原。‘正则’,是阐明名平之意,言其公正而有法则,合乎天道”。
收起全文
精华内容
参与话题
  • 史上最全的正则表达式-匹配中英文、字母和数字

    万次阅读 多人点赞 2018-07-19 16:14:27
    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、匹配...

    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。

    1、匹配中文:[\u4e00-\u9fa5]

    2、英文字母:[a-zA-Z]

    3、数字:[0-9]

    4、匹配中文,英文字母和数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
    同时判断输入长度:
    [\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}

    5、
    (?!_)  不能以_开头
    (?!.*?_$)  不能以_结尾
    [a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
    $  与字符串结束的地方匹配

    6、只含有汉字、数字、字母、下划线,下划线位置不限:
    ^[a-zA-Z0-9_\u4e00-\u9fa5]+$

    7、由数字、26个英文字母或者下划线组成的字符串
    ^\w+$

    8、2~4个汉字
    "^[\u4E00-\u9FA5]{2,4}$";

    9、最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
    ^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$
     

    10、匹配双字节字符(包括汉字在内):[^x00-xff]
    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

    11、匹配空白行的正则表达式:ns*r
    评注:可以用来删除空白行

    12、匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

    13、匹配首尾空白字符的正则表达式:^s*|s*$
    评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

    14、匹配Email地址的正则表达式:^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$

    评注:表单验证时很实用

    15、手机号:^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$

    16、身份证:(^\d{15}$)|(^\d{17}([0-9]|X|x)$)

    17、匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
    评注:网上流传的版本功能很有限,上面这个基本可以满足需求

    18、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    评注:表单验证时很实用


    19、匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
    评注:匹配形式如 0511-4405222 或 021-87888822

    20、匹配腾讯QQ号:[1-9][0-9]{4,}
    评注:腾讯QQ号从10000开始

    21、匹配中国邮政编码:[1-9]d{5}(?!d)
    评注:中国邮政编码为6位数字

    22、匹配身份证:d{15}|d{18}
    评注:中国的身份证为15位或18位

    23、匹配ip地址:d+.d+.d+.d+
    评注:提取ip地址时有用


    24、匹配特定数字:
    ^[1-9]d*$    //匹配正整数
    ^-[1-9]d*$   //匹配负整数
    ^-?[1-9]d*$   //匹配整数
    ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
    ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
    ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
    ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
    ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
    ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
    ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
    评注:处理大量数据时有用,具体应用时注意修正


    25、匹配特定字符串:
    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
    ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
    ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

    26、
    在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
    只能输入数字:“^[0-9]*$”
    只能输入n位的数字:“^d{n}$”
    只能输入至少n位数字:“^d{n,}$”
    只能输入m-n位的数字:“^d{m,n}$”
    只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
    只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
    只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
    只能输入非零的正整数:“^+?[1-9][0-9]*$”
    只能输入非零的负整数:“^-[1-9][0-9]*$”
    只能输入长度为3的字符:“^.{3}$”
    只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
    只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
    只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
    只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
    只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
    验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
    只能包含字符、数字和下划线。
    验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+”
    只能输入汉字:“^[u4e00-u9fa5],{0,}$”
    验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
    验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
    验证身份证号(15位或18位数字):“^d{15}|d{}18$”
    验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
    验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
    正确格式为:“01”“09”和“1”“31”。
    匹配中文字符的正则表达式: [u4e00-u9fa5]
    匹配双字节字符(包括汉字在内):[^x00-xff]
    匹配空行的正则表达式:n[s| ]*r
    匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/
    匹配首尾空格的正则表达式:(^s*)|(s*$)
    匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
    匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

     

    展开全文
  • 正则表达式

    万次阅读 多人点赞 2018-07-08 11:21:53
    一、概念正则表达式()

    在很多技术领域(如:自然语言处理,数据存储等),正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!

    一、概念

    正则表达式(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}

    正则表达式的学习就到这里结束啦,如果有小伙伴没有看明白的,可以上网查询正则的更多知识点!


    展开全文
  • Python-正则表达式

    千人学习 2019-10-31 15:05:33
    正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本...
  • 课程培训详细的笔记以及实例代码,让学员开始掌握正则表达式知识点 课程内容: 第1章:次数匹配:?、*、+、{n}等单个字符和子表达式匹配规则 第2章: 单个字符串匹配:多种...
  • 正则?= ?! ?=

    千次阅读 2019-10-12 14:56:01
    除了 ha 之外的

    除了 ha 之外的
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 关于正则表达式中的.*,.*?,.+?的理解

    万次阅读 多人点赞 2019-07-15 14:35:30
    本文对.*,.*?以及.+?三种形式的正则式做了梳理。并给出了Java的正则匹配代码和结果。

    1. .*

    . 表示 匹配除换行符 \n 之外的任何单字符,*表示零次或多次。所以.*在一起就表示任意字符出现零次或多次。没有?表示贪婪模式。比如a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
    又比如模式src=`.*`, 它将会匹配最长的以 src=` 开始,以`结束的最长的字符串。用它来搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=``test.jpg` width=`60px` height=`80px`

    2. .*?

    ?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就是匹配尽可能少的字符。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
    又比如模式 src=`.*?`,它将会匹配 src=` 开始,以 ` 结束的尽可能短的字符串。且开始和结束中间可以没有字符,因为*表示零到多个。用它来搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=``

    3. .+?

    同上,?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
    a.+?b匹配最短的,以a开始,以b结束的字符串,但a和b中间至少要有一个字符。如果把它应用于ababccaab的话,它会匹配abab(第一到第四个字符)和aab(第七到第九个字符)。注意此时匹配结果不是ab,abaab。因为a和b中间至少要有一个字符。
    又比如模式 src=`.+?`,它将会匹配 src=` 开始,以 ` 结束的尽可能短的字符串。且开始和结束中间必须有字符,因为+表示1到多个。用它来搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=``test.jpg`。注意与.*?时的区别,此时不会匹配src=``,因为src=`` 之间至少有一个字符。

    4. 示例代码

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import org.junit.jupiter.api.Test;
    
    public class TestRegx {
    
      @Test
      public void testRegx(){
    
        String str = "<img src=``test.jpg` width=`60px` height=`80px`/>";
    
        String pattern1 = "src=`.*`";
        String pattern2 = "src=`.*?`";
        String pattern3 = "src=`.+?`";
    
        Pattern p1 = Pattern.compile(pattern1);
        Pattern p2 = Pattern.compile(pattern2);
        Pattern p3 = Pattern.compile(pattern3);
    
        Matcher m1 = p1.matcher(str);
        Matcher m2 = p2.matcher(str);
        Matcher m3 = p3.matcher(str);
    
        System.out.println("根据pattern1匹配的结果:");
        if (m1.find()) {
          for(int i=0; i<=m1.groupCount(); i++){
            System.out.println(m1.group(i));
          }
        }
    
        System.out.println("根据pattern2匹配的结果:");
        if (m2.find()) {
          for(int i=0; i<=m2.groupCount(); i++){
            System.out.println(m2.group(i));
          }
        }
    
        System.out.println("根据pattern3匹配的结果:");
        if (m3.find()) {
          for(int i=0; i<=m3.groupCount(); i++){
            System.out.println(m3.group(i));
          }
        }
    
        String[] str1 = p1.split(str);
        String[] str2 = p2.split(str);
        String[] str3 = p3.split(str);
    
        System.out.println("根据pattern1切分的结果");
        for (int i=0; i< str1.length; i++) {
          System.out.println(str1[i]);
        }
    
        System.out.println("根据pattern2切分的结果");
        for (int i=0; i< str2.length; i++) {
          System.out.println(str2[i]);
        }
    
        System.out.println("根据pattern3切分的结果");
        for (int i=0; i< str3.length; i++) {
          System.out.println(str3[i]);
        }
      }
    }
    

    5. 示例结果

    在这里插入图片描述

    展开全文
  • 机器学习中正则化项L1和L2的直观理解

    万次阅读 多人点赞 2020-04-28 20:35:50
    正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1\ell_1-norm和ℓ2ℓ2\ell_2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数...
  • 正则里的(.*?)是什么意思

    千次阅读 2019-06-08 17:21:32
    例子:正则表达式r.t 可以匹配这些字符串:rat、rut、r t,但是不匹配root。 .*? 表示匹配任意字符到下一个符合条件的字符 例子:正则表达式a.*?xxx可以匹配abxxx axxxxx abbbbbxxx 扩展: * 匹配0或多个正好...
  • 正则整理

    2020-09-18 16:15:12
    正则整理 一:定义 正则是模式 ,模型,是用来匹配验证字符串的 1,定义模式 RegExp 2,匹配 .test方法 RegExp.prototype.text 3,捕获 . exec方法 返回的是数组,会把所有匹配项保存到数组里,如果正则和字符串...
  • 正则表达式-- (.*?) 或 (.*+)

    万次阅读 多人点赞 2019-07-06 14:56:22
    正则表达式在爬虫中的应用,可以更好的取自己想要的数据,有些时候也可以应对那些反爬取的网站。 后边多一个?表示懒惰模式。 必须跟在*或者+后边用 如:<img src="test.jpg" width="60px" height="80px"/>...
  • 正则 ?《= 和 ?= 的用法

    万次阅读 2018-08-16 14:24:17
    https://www.cnblogs.com/whaozl/p/5462865.html   文本:  &lt;br/&gt;您好,非常好,很开心认识你 &lt;br/&gt;&lt;a target=_blank href="www.baidu.com".../v
  • 正则 /\D/g

    万次阅读 2013-09-10 10:42:22
    onKeyUp="this.value=this.value.replace(/\D/g,'');" 红色的是什么意识 /g是什么意思 ----------------------------------- /g是全局匹配 ---------------------------------- js里可以使用perl风格的表达式 ...
  • 正则\\”

    2019-03-11 22:12:00
    return JSON.parse( '{"' + decodeURIComponent(search) .replace(/"/g, '\\"') .replace(/&amp;/g, '","') .replace(/=/g, '":"') + ...’)中的**\&qu
  • 中文正则表达式匹配-正则中文匹配

    万次阅读 多人点赞 2018-05-30 17:13:44
    原文链接:http://caibaojian.com/zhongwen-regexp.html这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。\w匹配的仅仅...
  • 常用正则表达式—邮箱(Email)

    万次阅读 多人点赞 2016-06-15 13:56:49
    常用正则表达式—邮箱(Email)本文针对有一点正则基础的同学,如果你对正则一无所知,请移步“正则表达式30分钟入门教程”学习。要验证一个字符串是否为邮箱的话,首先要了解邮箱账号的格式。我尝试过在网上找出一...
  • 正则表达式在线自动生成器

    万次阅读 2019-05-31 14:31:49
    正则表达式的强大众所周知,它令程序员的头痛程度也数一数二的。最近我发现了一个网站,txt2re,能够自动为你生成正则表达式,而且很灵活,在这里推荐一下。 网址: http://www.txt2re.com/ http://txt2re.com/ ...
  • 正则表达式匹配URL

    万次阅读 多人点赞 2012-08-27 16:35:54
    最近在做一些关于URL匹配的项目,本来对正则表达式了解的不多,上网搜索了好多前辈写的正则表达式,发现很少能被我使用的,现将我自己写的正则表达式贴出来,供大家参考。 %% 首先,正则表达式:  String check ...
  • 正则化及正则化项的理解

    万次阅读 多人点赞 2016-08-15 22:52:04
    首先了解一下正则性(regularity),正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导)。 正则化是为了解决过拟合问题。...
  • 正则表达式验证Ip地址(绝对正确)

    万次阅读 多人点赞 2020-06-29 14:38:47
    之前一直不太会写正则表达式,很多要用到正则表达式的都直接百度,像上次要用正则表达式验证是否是合法的ip地址,然后就上网找,结果就是没找到一个对的,今天就为大家贡献一下,写个对的,并做一下解析。...
  • 比较常用的几个正则表达式(匹配数字)

    万次阅读 多人点赞 2012-08-17 16:01:43
    正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了...
1 2 3 4 5 ... 20
收藏数 725,271
精华内容 290,108
关键字:

正则