精华内容
下载资源
问答
  • 实际上,正则表达式有四个功能:匹配,即查找,例如,从杂乱的一堆文本里面,找到你想要的替换,按某种规则替换内容分割,将文本内容按某种规则分割开来检验,检验某文本是否符合规则如果没玩过正则表达式,也看不出...

    d76fbba8b8ab4c5e7ab86dd50e07bceb.gif

    f3909b49ac2c31b57439bfa819d11fc8.png

    正则表达式(Regular Expression,或者Regex),能干嘛?听说很强悍,很多人用来查找字符串,或者替换某些字符串。

    实际上,正则表达式有四个功能:

    1. 匹配,即查找,例如,从杂乱的一堆文本里面,找到你想要的

    2. 替换,按某种规则替换内容

    3. 分割,将文本内容按某种规则分割开来

    4. 检验,检验某文本是否符合规则

    如果没玩过正则表达式,也看不出这四个功能到底能干嘛。

    我刚学那阵,觉得这东西,玩点小儿科的东西还行,能干大事?

    后来,越用越多,发现这货在你遇到困境的时候可以力挽千钧。

    话说回来,这个东西能装逼吗?

    1. 你女朋友喊你查她的号码

    你女朋友(假如你有)有一天跟你撒娇,她给你一个txt文档,里面存着一个她的号码,让你把她的号码找出来。此时,你不记得她的完整号码了,如果找不出来,晚上就得跪CPU了。刹那间,你想到了,她的号码有这样的数字……771……55(亲亲你……嗯嗯)。于是你,快速用Notepad++打开含有一堆乱七八糟电话号码的文本。查找输入:1\d+771\d+55,然后回车,Bingo!不信,你试试:

     15672846712 13892738409           021-82937465 13263748592   18028374732 010-27384762 13877190955 022-287362513243537381621723839 38293923 482349343123372390 1367282902 1356282920......

    0f18f6dd20a24abe829b7c3c912635c7.png

    好吧,故事是虚构的,也别幻想你女朋友真的让你查号码了。

    简单解释一下,这里面的\d就是表示digital的意思即0-9都可以用\d来描述,而\d+就表示有多个数字。这个是正则表达式中非常简单的应用了。

    2. 查找文件中某字符串内容

    模糊搜索到底怎么搞的,你有想过么?要不先来玩下这个,好像有种“万军之中取人头颅如探囊取物”感觉。

    例如,你要查找AUTOSAR代码中Os Timer相关的某些函数,这些函数有些特征,带有Os_Pit的字符,那么你可以用linux上的grep命令或者用vscode的正则表达式功能Os_\w+Pit\w+来查找。

    390d708d21783a1bebcc7c2002294c2a.png

    上面这个\w就是匹配word的意思。其实,原理跟上一个例子类似,原理很简单。

    实际上,“匹配或者查找”是正则表达式最基本的功能了。

    3. 爬取和解析一些不可描述的内容

    正则表达式还能不能干点刺激的事情呢?

    我有个朋友(别问我朋友是谁,有没有他的联系方式……)。他为了下载某些小视频,硬生生地学会了爬虫,然后,下载了一堆封面图片和一些不可描述的文字描述,还有BT种子,我问他有多少,他说1TB的硬盘快满了……

    我问他是怎么做到的,他说他用了BeautifulSoup库来爬的,傻瓜式的,很简单,大有要传授我这些秘技的样子。他还按番号做了分类,每一类番号,还生成一个markdown文本,其中用的最多的就是Regex,例如某类番号可以用ABC-\d+筛选出来。

    搞完后,他“握草”了好几次,惊叹这个小小的岛国,怎么可以拍这么多这些不可描述的小视频,而且还……(此处省略255个字)

    我很好奇,这个爬虫这么好玩?我专门研究了下这个爬虫神器BeautifulSoup,其中很多方法是支持正则表达式的,如re.compile('[a-z]+-[0-9]+',re.I).findall(str_temp)。用起来简直是如虎添翼……

    玩归玩,正则表达式在我眼里应该多干些正经事的。

    4.  批量格式化处理

    我有一堆16进制数,我想用到C代码里面,例如将下面的内容加上0x和逗号,怎么搞?

     0123456789ABCDEF101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F

    作为一个很懒的程序员,我肯定不会一个个添加的。试试这个:

    查找目标: (\w+)[\s!\n]

    替换为:0x\1,

    a09e0c57871bcf1872bff5fc1cd7296b.png

    (\w+)就是那一个个十六进制数,这个括号的作用,就先记录一下,把它放一个分组里面,等下还要用。

    [\s!\n]又是啥玩意?中括号的意思,就是匹配中括号里面任意一个内容,\s就是空字符,包括空格、换行符、TAB等。\n就是换行啦,而!\n呢,非换行咯。整个意思就是,匹配任意不包含换行符的空字符。

    下面,这个0x\1,中的\1就是上面查到的分组的内容。

    5.  将数据格式化后复制到Excel

    上面的例子有点啰嗦了,看个简单的,有以下数据,想将其中的0x和逗号去掉,并复制到Excel中。

     0x20, 0x21,   0x22, 0x23,   0x24,   0x25, 0x26, 0x27, 0x28,     0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,0x30, 0x31, 0x32,   0x33, 0x34, 0x35, 0x36, 0x37,   0x38, 0x39,   0x3A, 0x3B,   0x3C, 0x3D, 0x3E, 0x3F,0x40,  

    实际需要分两步:

    1. 想将其中的0x和逗号去掉;

    2. 复制到Excel中(需要将多余的空格换成Tab字符,才能将多个数值分别填到不同单元格中)。

    按照上面的例子,需要:

    查找目标: 0x(\w+),\s+

    替换为:\1\t

    d7d4bf00ebdbf76fa4ff1c7692f59784.png

    自己领悟一下,哈哈!雕虫小技,还有没有别的?

    6. 代码生成与格式化

    现有播放器很多个命令,我想将其生成对应的函数,怎么办?

    命令:

     playpausestopprevnextfastforwardfastrewind……

    函数:

     BOOL player_play_cmd_func(void* p){    }BOOL player_pause_cmd_func(void* p){    }……

    一个个手动敲进去?我这么懒,才不呢。

    试试这个:

    查找目标: ^(\w+)$

    替换为:BOOL player_\1_cmd_func\(void* p\)\n{\n\n}\n

    f0e98083751aa8d11dd7d915f9d2cf86.png

    好像都很简单啊,有没难一点的啊!

    7.  删除不含某些信息的的内容

    匹配查找包含某些信息的内容倒是容易,怎么匹配不包含的内容啊?

    例如,我想删掉不是.mid后缀的内容,怎么搞?

     2009/06/11 05:22           24,253 flourish.mid2009/06/11 05:24           118,060 ir_begin.wav2009/06/11 05:24           126,252 ir_end.wav2009/06/11 05:24           178,732 ir_inter.wav2009/06/11 05:22           228,396 notify.wav2009/06/11 05:22           40,075 onestop.mid2009/06/11 05:22           111,788 recycle.wav2009/06/11 05:22           88,236 ringout.wav2009/06/11 05:22           22,097 town.mid

    试试这个:

    查找目标:^((?!(2009.*\.mid$)).)*$

    替换为:

    看不懂?好好研究下!哈哈哈……

    7.  搭上脚本语言的快车

    在Python、Ruby、Perl、JavaScript上用正则表达式,简直会爽到飞起来……前提你要学会正则表达式各种语法。

    这个就不装逼了,以后慢慢玩。

    -END-

    来源 | 嵌入式软件实战派

    作者 | 实战派小师弟

    整理文章为传播相关技术,版权归原作者所有 |

    如有侵权,请联系删除 |

    1fe11b952e97ba804c93afd451035d6c.png

    【1】超长干货为你解析:从串口驱动到Linux驱动模型,嵌入式必会!

    【2】超全!嵌入式必懂的CAN总线一文讲通了

    【3】干货:嵌入式系统设计开发大全!(万字总结)

    【4】嵌入式系统求职回忆录:广嵌、迈瑞、华为、智光……

    【5】嵌入式行业真的没有前途吗?


    c2b3f7c086c0562b1b7250c28d5eeaa9.gif

    展开全文
  • 此外,正则表达式还常用于过滤页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)。 其他编程语言也一样会有正则表达式。 2.正则表达式的特点 (1)灵活性、逻辑性和功能性非常的强。

    正则表达式的概述

    1.什么是正则表达式

    • 正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。

    • 作用:正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本,例如:验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)。

    • 其他编程语言也一样会有正则表达式。

    2.正则表达式的特点

    (1)灵活性、逻辑性和功能性非常的强。

    (2)可以迅速地用极简单的方式达到字符串的复杂控制。

    (3)对于刚接触的人来说,比较晦涩难懂。

    (4)实际开发,一般都是直接复制写好的正则表达式,但是要求会使用正则表达式并且根据实际情况修改正则表达式。

    正则表达式在JavaScript中的使用

    1.创建正则表达式

    • 在JavaScript中,可以通过以下两种方式创建正则表达式:

      (1)通过调用RegExp对象的构造函数创建

      var 变量名 = new RegExp(/表达式/)
      //举例:
      var reg = new RegExp(/123/);
      console.log(reg);		//输出结果为:/123/
      

      (2)通过字面量创建

      var reg = /123/;
      

    2.测试正则表达式test

    • test()正则对象方法,用于检测字符串是否符合该规则,该对象会返回true或false,其参数是检测字符串。
    regexObj.test(str)
    

    (1)regexObj 是写的正则表达式。

    (2)str 是我们要测试的文本。

    (3)该方法就是检测str文本是否符合我们写的正则表达式规范。

    • 举例:
    var reg = /123/;
    console.log(reg.test(123));		//输出结果为:true
    

    正则表达式中的特殊字符

    1.正则表达式的组成

    • 一个正则表达式可以由简单的字符构成,比如:/abc/;也可以是简单和特殊字符的组合,比如:/ab*c/。其中,特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如:^、$、+等。

    • 特殊字符非常多,可以参考:

      MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

      jQuery手册:正则表达式部分

      正则测试工具:http://tool.oschina.net/regex

    2.边界符

    • 正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。
    边界符 说明
    ^ 表示匹配行首的文本(以谁开始)
    $ 表示匹配行尾的文本(以谁结束)
    var rg = /abc/;		//正则表达式里面不需要加引号,不管是数字型还是字符串型
    //该正则表达式表示只要包含abc这个字符串,并且abc要连起来的,不能分开,返回的就是true
    console.log(re.test('abc'));		//输出结果为:true
    console.log(re.test('abcd'));		//输出结果为:true
    console.log(re.test('aabcd'));	//输出结果为:true
    console.log(re.test('ahbgc'));	//输出结果为:true
    
    console.log('----------------------');
    
    var reg = /^abc/;		//表示必须以abc开头,返回的才是true
    console.log(reg.test('abc'));		//输出结果为:true
    console.log(reg.test('abcd'));	//输出结果为:true
    console.log(reg.test('aabcd'));	//输出结果为:false
    
    console.log('----------------------');
    
    var reg = /^abc$/;		//精确匹配,要求必须是abc字符串才符合规范,才返回true,其他都是false
    console.log(reg.test('abc'));		//输出结果为:true
    console.log(reg.test('abcd'));	//输出结果为:false
    console.log(reg.test('aabcd'));	//输出结果为:false
    console.log(reg.test('abcabc'));//输出结果为:false
    

    3.字符类

    • []表示有一系列字符可供选择,只要匹配其中一个就可以了。
    var rg = /[abc]/;	//只要包含有a或者b或者c,都返回true(可以包含多个不同字符,同个字符也可以多次出现)
    console.log(rg.test('andy'));		//输出结果为:true
    console.log(rg.test('baby'));		//输出结果为:true
    console.log(rg.test('color'));	//输出结果为:ture
    console.log(rg.test('red'));		//输出结果为:false
    
    var rg = /^[abc]$/;		//表示只能三选一,即'a'或'b'或'c',才返回true
    console.log(rg.test('aa'));		//输出结果为:fasle
    console.log(rg.test('a'));		//输出结果为:true
    console.log(rg.test('b'));		//输出结果为:true
    console.log(rg.test('c'));		//输出结果为:true
    console.log(rg.test('abc'));	//输出结果为:false
    
    • [-]:方括号内部的范围符-
    var reg = /^[a-z]$/;
    console.log(reg.test('a'));		//输出结果为:true
    console.log(reg.test('z'));		//输出结果为:true
    console.log(reg.test(1));			//输出结果为:false
    console.log(reg.test('A'));		//输出结果为:false
    
    • 字符组合
    var reg = /^[a-zA-Z0-9_-]$/
    
    • [^]方括号内部的取反符 ^
    var reg = /^[^a-zA-Z0-9_-]$/
    

    4.量词符

    • 量词符用来设定某个模式出现的次数。
    量词 说明
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次,注意逗号左右不要留有空格
    • *举例:
    var reg = /^a*$/;
    console.log(reg.test(''));		//输出结果为:true
    console.log(reg.test('a'));		//输出结果为:true
    console.log(reg.test('aaa'));	//输出结果为:true
    console.log(reg.test('b'));		//输出结果为:false
    

    5.括号总结

    (1)大括号:量词符,里面表示重复的次数。

    (2)中括号:字符集合,匹配方括号中的任意字符。

    (3)小括号:表示优先级。

    • 在线测试:https://c.runoob.com/

    6.预定义类

    • 预定义类指的是某些常见模式的简写方式。
    预定义 说明
    \d 匹配0-9之间的任一数字,相当于[0-9]
    \D 匹配所有0-9以外的字符,相当于[ ^0-9]
    \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
    \W 除所有字母、数字和下划线以外的字符,相当于[ ^A-Za-z0-9_]
    \s 匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f]
    \S 匹配非空格的字符,相当于[ ^\t\r\n\v\f]

    7.补充

    • 或者符号为:|
    var reg = /^\d{3}-\d{8}|\d{4}-\d{7}$/;
    

    正则表达式中的替换

    1.replace替换

    • replace()方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式。
    stringObject.replace(regexp/substr,replacement)
    

    (1)第一个参数:被替换的字符串或者正则表达式。

    (2)第二个参数:替换为的字符串。

    (3)返回值是一个替换完毕的新字符串。

    //第一个参数为字符串:
    var str = 'andy和red';
    var newStr1 = str.replace('andy','baby');
    console.log(newStr1);		//输出结果为:baby和red
    //第一个参数为正则表达式:
    var str = 'andy和red';
    var newStr2 = str.replace(/andy/,'baby');
    console.log(newStr2);		//输出结果为:baby和red
    

    2.正则表达式参数

    /表达式/[switch]
    
    • switch(也称为修饰符)按照什么样的模式来匹配。值如下:

      (1)g:全局匹配

      (2)i:忽略大小写

      (3)gi:全局匹配 + 忽略大小写

    • 应用举例:

    <body>
      <textarea name="" id="message"></textarea>
      <button>
        提交
      </button>
      <div>
      </div>
    </body>
    
    <script>
    	var text = document.querySelector('textarea');
      var btn = document.querySelector('button');
      var div = document.querySelector('div');
      btn.onclick = function(){
        div.innerHTML = text.value.replace(/神经|滚/g,'**');		//会把输入textarea的语句中所有“神经”和“滚”的字符替代为“**”;如果没有加g,并且用“|”连起来多个字符,则只会替换一次(不是每个的第一次都替换,而是全部的第一个出现被替换而言)
      }
    </script>
    

    微信公众号也会定期更新,觉得文章写得还可以的,可以加个关注!点个赞!谢谢!

    在这里插入图片描述

    展开全文
  • 在ue中,经常遇到需要去掉字符串中的空格。比如,在列模式下编辑得到的内容往往... 当需要在正则表达式的后面引用前面已经匹配的内容或者在被替换为这部分需要引用正则表达式中已经匹配的内容的时候,就需

    在ue中,经常遇到需要去掉字符串中的空格。比如,在列模式下编辑得到的内容往往含有很多不需要的空格,这个时候需要使用正则表达式来替换。

      这里使用的是ue中的unix正则表达式引擎,替换表达式是:"(/s*)([a-z]+)/s*" 替换为:"/2"。

    解释: 上面的正则表达式是将“ ”内的首尾含有的空格去掉,保留中间的小写字母。 这里涉及到分组的概念。

    当需要在正则表达式的后面引用前面已经匹配的内容或者在被替换为这部分需要引用正则表达式中已经匹配的内容的时候,就需要使用到分组。

      捕获组是可以被捕获的分组,其中显式命名的捕获组称为命名捕获组。

     

    见:

     

    正则表达式分组相关的知识

    一、组的分类
    正则中的组有捕获组和非捕获组,而捕获组又分为普通的捕获组和命名捕获组,分别为
    捕获组:(exp)
    命名捕获组:(? <name> exp)
    非捕获组:(?:exp)

    二、组的作用
    1、捕获组的作用

    捕获组的作用是将正则表达式exp匹配到的内容保存到组里,供以后使用

    比如这样一个字符串:
    <a href="http://bbs.csdn.net" title="床上等你"> CSDN </a>
    我想得到网址,而它符合的规则是在 <a...> 标签内,那就可以这样做

    C# code
    string test = "<a href=/"http://bbs.csdn.net/" title=/"床上等你/">CSDN</a>"; Match m = Regex.Match(test, @"<a/s*href=""([^""]*)""[^>]*>", RegexOptions.IgnoreCase); if (m.Success) MessageBox.Show(m.Groups[1].Value);


    上面的正则表达式匹配到了 <a href="http://bbs.csdn.net" title="床上等你"> ,而我们想得到网址,表达式其它部分只是为了保证取到的网址是在 <a...> 标签内的,所以这里用到的捕获组,把匹配到的网址保存到捕获组里,然后用m.Groups[1].Value得到这个捕获组所匹配到的内容
    m.Groups[1].Value是一种对捕获的引用方式,还有另外一种引用方式m.Result("$1"),效果是一样的

    普通捕获组是用1,2,3...这样的自然数对捕获组进行引用的
    而命名捕获组可以不用去数捕获组的序号,直接通过捕获组的命称对它进行引用

    C# code
    string test = "<a href=/"http://bbs.csdn.net/" title=/"床上等你/">CSDN</a>"; Match m = Regex.Match(test, @"<a/s*href=""(?<url>[^""]*)""[^>]*>", RegexOptions.IgnoreCase); if (m.Success) MessageBox.Show(m.Groups["url"].Value);



    至于捕获组的分组命名及序号排序规则,在后面说明

    2、非捕获组的作用
    非捕获组的作用有两个,第一个比较常用,第二个了解一下即可

    (1)、节省系统资源,提高效率
    在使用“ ¦”表示“或”的关系时,稍微复杂的情况,需要用()来限制“ ¦”的作用范围,否则即表示“ ¦”的左右两侧整体为“或”的关系,这是题外话,这里不详细说明了,还有用{num}来表达式匹配次数时,有时前面也要用到()限制作用范围
    而使用()来限制作用范围的同时,默认情况下会把匹配到的结果保存到一个捕获组里,而大多数时候,我们是不需要保存这部分内容的,这就带来一定的副作用,浪费了系统资源,降低了效率
    非捕获组的一个作用就是用来消除这种副作用的,(?:exp)用来匹配exp所表示的规则,但不将匹配结果保存到捕获组里

    比如匹配HH:mm:ss这样的时间

    C# code
    MessageBox.Show(Regex.IsMatch("18:23:55", "^(?:[01][0-9]|2[0-3])(?::[0-5][0-9]){2}$").ToString());


    (?:[01][0-9] ¦2[0-3])验证小时部分是否符合规则,但不会将匹配结果保存到捕获组里
    (?::[0-5][0-9]){2}验证了分秒部分,但不会将匹配结果保存到捕获组里

    (2)、在使用Regex.Split方法时,起到与RegexOptions .ExplicitCapture参数相同的作用,这个用得不多,了解一下就行了

    三、捕获组分组命名及序号排序
    普通捕获组是按“(”从左到右出现的先后顺序以自然数1,2,3...进行命名的
    命名捕获组就是以(? <name> exp)中的name进行命名的

    但是要注意一点,在表达式匹配成功的前提下,$0在任何情况下都表示整个表达式所匹配到的内容,m.Groups[0].Value表示整个表达式匹配到的内容,可以简写为m.Value

    另外就是命名捕获组除了可以用name对它进行引用外,还可以通过序号对它引用,它的命名规则为:先对普通捕获组从左到右进行序号命名,然后再从开头,从左到右对命名捕获组进行序号命名,举例如下

    <a/s*href="(? <url> [^"]*)"/s*title="([^"]*)"[^> ]*> (? <text> [/s/S]*?) </a>
    2 url 1 3 text

    C# code
    string test = "<a href=/"http://bbs.csdn.net/" title=/"床上等你/">CSDN</a>"; Match m = Regex.Match(test, @"<a/s*href=""(?<url>[^""]*)""/s*title=""([^""]*)""[^>]*>(?<text>[/s/S]*?)</a>", RegexOptions.IgnoreCase); if (m.Success) { richTextBox1.Text += m.Groups[0].Value + "/n"; //<a href="http://bbs.csdn.net" title="床上等你">CSDN</a> richTextBox1.Text += m.Groups[1].Value + "/n"; //床上等你 richTextBox1.Text += m.Groups[2].Value + "/n"; //http://bbs.csdn.net richTextBox1.Text += m.Groups["url"].Value + "/n"; //http://bbs.csdn.net richTextBox1.Text += m.Groups[3].Value + "/n"; //CSDN richTextBox1.Text += m.Groups["text"].Value + "/n"; //CSDN }



    四、组的另一种引用方式
    除了上面 m.Groups[1].Value 和 m.Result("$1") 这两种对结果集进行处理时的引用方式外,还有在替换时的一种引用方式,举例如下

    只保留网址和链接文字,去掉 <a...> 标签中其它无用信息

    C# code
    string test = "<a href=/"http://bbs.csdn.net/" title=/"床上等你/">CSDN</a>"; string result = Regex.Replace(test, @"<a/s*href=""([^""]*)""/s*title=""([^""]*)""[^>]*>(?<text>[/s/S]*?)</a>", @"<a href=""$1"">${text}</a>", RegexOptions.IgnoreCase); MessageBox.Show(result);



    普通捕获组就是用$number来引用,而命名捕获是用${name}来引用 

    展开全文
  • 一、JavaScript正则表达式正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。什么...

    一、JavaScript正则表达式

    正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

    搜索模式可用于文本搜索和文本替换。

    什么是正则表达式?

    正则表达式是由一个字符序列形成的搜索模式。

    当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

    正则表达式可以是一个简单的字符,或一个更复杂的模式。

    正则表达式可用于所有文本搜索和文本替换的操作。

    语法

    /正则表达式主体/修饰符(可选)

    其中修饰符是可选的。

    实例:

    var patt = /runoob/i

    实例解析:

    /runoob/i  是一个正则表达式。

    runoob  是一个正则表达式主体(用于检索)。

    i  是一个修饰符(搜索不区分大小写)。

    使用字符串方法

    在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。

    search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    search() 方法使用正则表达式

    实例:使用正则表达式搜索 "Runoob" 字符串,且不区分大小写:

    var str = "Visit Runoob!";

    var n = str.search(/Runoob/i);

    console.log(n );//输出结果为:6

    search() 方法使用字符串

    search 方法可使用字符串作为参数。字符串参数会转换为正则表达式:

    实例:检索字符串中 "Runoob" 的子串:

    var str = "Visit Runoob!";

    var n = str.search("Runoob");

    console.log(n );//输出结果为:6

    replace() 方法使用正则表达式

    实例:使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :

    var str = 'Visit Microsoft!';

    var txt = str.replace(/microsoft/i,"Runoob");

    console.log(txt);//结果输出为:Visit Runoob!

    你注意到了吗?

    正则表达式参数可用在以上方法中 (替代字符串参数)。正则表达式使得搜索功能更加强大(如实例中不区分大小写)。

    replace() 方法使用字符串

    实例:replace() 方法将接收字符串作为参数:

    var str = 'Visit Microsoft!';

    var txt = str.replace("Microsoft","Runoob");

    console.log(txt);//结果输出为:Visit Runoob!

    正则表达式修饰符

    修饰符可以在全局搜索中不区分大小写:

    修饰符

    描述

    i

    执行对大小写不敏感的匹配。

    g

    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    m

    执行多行匹配。

    正则表达式模式

    方括号用于查找某个范围内的字符:

    表达式

    描述

    [abc]

    查找方括号之间的任何字符。

    [0-9]

    查找任何从 0 至 9 的数字。

    (x|y)

    查找任何以

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

    元字符

    描述

    d

    查找数字。

    s

    查找空白字符。

    b

    匹配单词边界。

    uxxxx

    查找以十六进制数 xxxx 规定的 Unicode 字符。

    量词:

    量词

    描述

    n+

    匹配任何包含至少一个n的字符串。

    n*

    匹配任何包含零个或多个n的字符串。

    n?

    匹配任何包含零个或一个n的字符串。

    使用 RegExp 对象

    在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

    使用 test()

    test() 方法是一个正则表达式方法。

    test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

    以下实例用于搜索字符串中的字符 "e":

    实例:

    var patt = /e/;

    var res = patt.test("The best things in life are free!");

    console.log(res );//字符串中含有 "e",所以该实例输出为:true

    你可以不用设置正则表达式的变量,以上两行代码可以合并为一行:

    /e/.test("The best things in life are free!")

    使用 exec()

    exec() 方法是一个正则表达式方法。

    exec() 方法用于检索字符串中的正则表达式的匹配。

    该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

    以下实例用于搜索字符串中的字母 "e":

    实例:

    var res = /e/.exec("The best things in life are free!");

    console.log(res? res[0] : res);//字符串中含有 "e",所以该实例输出为:e

    正则表达式表单验证实例:

    /*是否带有小数*/

    function isDecimal(strValue ) {

    var objRegExp= /^d+.d+$/;

    return objRegExp.test(strValue);

    }

    /*校验是否中文名称组成 */

    function ischina(str) {

    var reg=/^[u4E00-u9FA5]{2,4}$/; /*定义验证表达式*/

    return reg.test(str); /*进行验证*/

    }

    /*校验是否全由8位数字组成 */

    function isStudentNo(str) {

    var reg=/^[0-9]{8}$/; /*定义验证表达式*/

    return reg.test(str); /*进行验证*/

    }

    /*校验电话码格式 */

    function isTelCode(str) {

    var reg= /^((0d{2,3}-d{7,8})|(1[3584]d{9}))$/;

    return reg.test(str);

    }

    /*校验邮件地址是否合法 */

    function IsEmail(str) {

    var reg=/^w+@[a-zA-Z0-9]{2,10}(?:.[a-z]{2,4}){1,3}$/;

    return reg.test(str);

    }

    二、JavaScriptRegExp对象

    RegExp 对象

    正则表达式是描述字符模式的对象。

    正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

    语法

    var patt=new RegExp(pattern,modifiers);

    或者更简单的方式:

    var patt=/pattern/modifiers;

    pattern(模式) 描述了表达式的模式

    modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

    注意: 当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 )。比如,以下是等价的:

    var re = new RegExp("\w+");

    var re = /w+/;

    修饰符

    修饰符用于执行区分大小写和全局匹配:

    修饰符

    描述

    执行对大小写不敏感的匹配。

    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    m

    执行多行匹配。

    方括号

    方括号用于查找某个范围内的字符:

    表达式

    描述

    查找方括号之间的任何字符。

    查找任何不在方括号之间的字符。

    [0-9]

    查找任何从 0 至 9 的数字。

    [a-z]

    查找任何从小写 a 到小写 z 的字符。

    [A-Z]

    查找任何从大写 A 到大写 Z 的字符。

    [A-z]

    查找任何从大写 A 到小写 z 的字符。

    [adgk]

    查找给定集合内的任何字符。

    [^adgk]

    查找给定集合外的任何字符。

    (red|blue|green)

    查找任何指定的选项。

    元字符

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

    元字符

    描述

    查找单个字符,除了换行和行结束符。

    查找单词字符。

    查找非单词字符。

    查找数字。

    查找非数字字符。

    查找空白字符。

    查找非空白字符。

    匹配单词边界。

    匹配非单词边界。

    展开全文
  • 好好学习,天天向上本章主要内容是:介绍、语法、一些方法、组成、术语、量词、分组、或操作符、分组的反向引用、中文字符一、正则表达式的介绍正则表达式:(Regular Expression)用于匹配规律规则的表达式,正则...
  • 正则表达式知识详解系列,通过代码示例来说明正则表达式知识示例功能:1、将手机号部分数字替换成*2、给url增加超链接a标签3、更改日期格式/*** 替换* @date 2016-04-20 18:09:00* @author sgl*/public static void ...
  • 第一:像网页链接之间的内容中[URL[绝对地址替换成相对地址,首先要查找匹配这个链接,查找匹配这个串的正则表达式串为(]\\s*){0,})href\\s*=\\s*(\"|'|)([^\\2\\s>]*)\\2((?:\\s*[^\\s>]){0,}\\s *>)//...
  • 一旦编译了所需的正则表达式并通过将输入字符串作为参数传递给matcher()方法来检索匹配器对象。您可以使用replaceAll()Matcher类的方法用另一个str4替换输入字符串的所有匹配部分。此方法接受一个字符串(替换字符串)...
  • 目录: 一、正则表达式简介 二、正则表达式符号的含义以及简单的例子 ... 3.1正则表达式应用——替换指定内容到行尾 3.2正则表达式应用——数字替换 3.3正则表达式应用——删除每一行行尾的指定字符 ...
  • 不保留输入框)3)移除隐藏的input标签,即type="hidden"4)替换textarea标签,只保留内容5)移除script标签二、代码实现这里主要使用String的replaceAll方法实现标签的替换,当然你可以可以使用正则表达式的分组匹配和...
  • 正则表达式最终,要把内容里的空行和多余的连续空格移除,使用String里的replace或者replaceAll,试了不少次都没有成功。spa最后发现须要使用正则表达式Regex。先把解决方案共享以下。rem1. 移除多余的连续空格,只...
  • 正则表达式一、正则表达式概述及语法 概述 使用单个字符串来描述/匹配一系列符合某个语法...使用正则表达式可以方便的处理来字符串复杂的查找 find/替换replace/匹配matches/分割split工作 2.正则表达式使用步骤...
  • 正则表达式常被用来检索,替换那些符合某个模式(规则)的文本。 2.如何创建正则表达式对象 3.正则对象的常用方法 4.字符串对正则表达式方法使用 5.正则表达式元字符的使用 二.创建正则表达式 – 正则的作用:快读查找...
  • 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。...正则表达式可用于所有文本搜索和文本替换的...
  • UltraEditor 替换公式正则表达式

    千次阅读 2016-09-02 16:13:48
    列表内容 % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串一定在行尾 ? 匹配除换行符外的任一单个字符. * 匹配任意个数的字符出现任意次数(不包括换行符) + 匹配前导字符或者表达式...
  • 正则表达式处理文本有如疾风扫秋叶,绝大部分编程语言都内置支持正则表达式,它应用在诸如表单验证、文本提取、替换等场景。爬虫系统更是离不开正则表达式,用好正则表达式往往能收到事半功倍的效果。介绍正则表达式...
  • 本文实例讲述了Python基于正则表达式实现文件内容替换的方法。分享给大家供大家参考,具体如下:最近因为有一个项目需要从普通的服务器移植到SAE,而SAE的thinkphp文件结构和本地测试的有出入,需要把一些html和js的...
  • 前言刚学习前端的时候,我只认为正则表达式只是用于校验数据,直到使用Vscode编辑器之后才知道正则表达式不仅仅用于程序数据校验,还可以对文档内容进行检索与批量替换内容。学习正则表达式正则表达式30分钟入门教程...
  • 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的...
  • 语法str.replace(regexp|substr, newSubStr|function)参数regexp(pattern)一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数...其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换...
  • package org.jkt.demo;import org.apache.oro.text.regex.MalformedPatternException;import org.apache.oro.text.regex.Pattern;import org.apache.oro.text.regex.PatternCompiler;import org.apache.oro.text.reg...
  • 正则表达式

    万次阅读 多人点赞 2019-08-26 16:21:48
    文章目录正则表达式简介正则表达式匹配规则re模块compile 函数Pattern 对象Match 对象范例常见格式分组位置分组分割批量替换正则案例: 正则表达式简介 为什么要学正则表达式? 实际上爬虫一共就四个主要步骤: ...
  • JavaScript正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 搜索模式可用于文本搜索和文本替换。 ...
  • 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在我的理解中:正则表达式的意思是我可以快速把相同特征的内容都筛选出来。选出来之后就可以同类型进行操作。之前在做AI电话的时候,话术管理中就有...
  • SYS_QL_POSITIV SYS_QL_NEGATIV SYS_QUICKSTOP SYS_CRASH_ALM 在以上内容的起始位置增加 ,{字符串,使用Notepad++替换功能时替换目标正则表达式为 ^[S],替换正则表达式为,{$1...
  • 本篇文章给大家带来的内容是关于浅析python正则表达式中反斜线的转义功能的原理,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。最近深入研读了正则表达式的一本经典著作,对于在python中使用正则...
  • ------------+ | regexp_instr(@a,'北京',1,3) | +-------------------------------+ | 41 | +-------------------------------+ 1 row in set (0.00 sec) 那总结下,这里我提到了 MySQL 8.0 的两个最有用的正则匹配...
  • 正则表达式的全面样式匹配表示法使您可以快速分析大量文本以找到特定的字符样式,提取、编辑、替换或删除文本子字符串,或将提取的字符串添加到集合以生成报告。对于处理字符串(例如 HTML 处理、日志文件分析和 ...
  • 1,浅拷贝只是拷贝一层(栈内存中内容),更深层次对象级别的只拷贝引用; 2,深拷贝拷贝多层,每一级别的数据都会拷贝; 浅拷贝的语法糖: Object.assign(target,…sources); target :用来接收的对象名,变量名或...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,787
精华内容 1,514
关键字:

替换内容正则表达式