正则捕获的细节及replace分析
1.var reg=/./与var reg=/\./的区别?
前者代表任意一个字符,
后者代表这个字符串中得有一个点
2.?的使用
如果单独的一个字符后面带?
代表1个或0个这个字符的出现; 列如: /\d?/
如果量词+后面带? 取消正则的贪婪性 在捕获的阶段
3.捕获:
1.普通捕获 正则的方法exec() 字符串的方法match()
普通捕获有懒惰性:
给正则添加一个修饰符g,可以解决;
match是将所有捕获的内容放在一个数组中,并返回,match就是exec()对函数的简单封装
2.分组捕获:还是正则的方法exec() 字符串的方法match()
只不过正则结构发生了变化加() (分两种捕获,全局和非全局)
非全局 var reg=/(a)(b)/ exec()和match()在非全局下分组捕获相同的,分组捕获在捕获的过程中,即捕获大正则的内容,也捕获分组中的内容,并返回
全局 var reg=/(a)(b)/g exec()和match()在全局下的分组捕获是不一样的,exec()不变,但是match()只捕获到大正则的内容:
3.分组的优势:
1.可以提升优先级
2.可以捕获引用
捕获引用:
\1 代表分组1里面的内容:
\2 带标分组2里面的内容:
分组必须在引用前,如果分组引用在分组前,就是普通的表达式// ???
案例:/((a)(b))/ 第一组:先捕获大() 第二组:在捕获小() 第三组:在捕获小() 总结:分组捕获:先捕获大(),在捕获小()
分组的结果存在正则(RegExp)的$number属性下:
\1和RegExp.$1二者,都是分组引用;
\1只能使用,在正则表达式里面,RegExp.$1可以外面使用,都是在捕获完成的条件下:
4.在捕获的过程中,怎样取消捕获分组内:
在分组的前面加上?:就ok了
?:和?=的区别:
?: 取消捕获分组的内容
?= 案例 var reg=/a(?=b)/ 捕获字符a后面紧跟着b,只返回a
replace细说:
replace是字符串的一个方法,他又两个参数,用后者将前者替换掉,并返回新的字符串:
不会改变原来的字符串;
1.如果第一个参数是字符串,只改变一次:
2.如果第一个参数是正则:捕获一次,改变一次:
字符串案例:var st="hello123hello456";
var ss=st.replace("hello","world");
console.log(ss) 返回的结果为:world123hello456
正则的案例:var st="hello123hello456";
var reg=/hello/g
var ss=st.replace(reg,"world")
console.log(ss) 结果为: world123world456
3.如果第二个参数是匿名函数,每次捕获1次,这个匿名函数就会执行1次:
案例:var st="hello123hello456";
var reg=/hello/g;
var ss=st.replace(reg,function(){
return "world" (这个匿名函数有三个参数,0:"world"要替换的,1:从哪开始,2:"hello123hello456" 原字符串)
})
console.log(ss) 返回的结果为:world123world456
如果以后想知道对象有几个参数就是用:console.log(arguments)
return是什么就会返回什么,没有return就是undefined;
正则捕获的细节及replace分析的更多相关文章
- Grok 正则捕获
Grok 正则捕获: \s+(?<request_time>\d+(?:\.\d+)?)\s+ 回顾下: (?:pattern) 匹 配 pattern 但不获取匹配结果,也就是说这是一个 ...
- grok 正则捕获(就是perl的正则捕获)
2.3.2 grok 正则捕获: \s+ 和 [\n\t\r\f]+ 一样 1.命名分组格式为(?<grp name>),反向引用时用\k<grp name> 2.命名分组的匹 ...
- expect正则捕获返回结果
expect正则捕获返回结果 expect: expect -re "([0-9]*)([a-zA-Z]*)"send_user "num is $expect_out( ...
- 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析
老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...
- 正则--test exec search match replace
1:test 是正则对象的方法不是字符串的方法,使用例子:正则对象也就是那个设定好的模式对象 var str = "hello world!"; var result = /^he ...
- 正则捕获url的?号传值
http://www.baidu.com/Q?k=0012719021908563998510650 有时候,我们需要在静态页面捕获?号传值,这时就需要用到js的正则表达式. 例如:我们要获取上面这个 ...
- 使用wireshark捕获SSL/TLS包并分析
原创博客,转载请注出处! TLS运作方式如下图:
- PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析
一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应用程序启动后,事件处理就是应用的主循环,事件处理负责接收事件.分发事件.接收应用处理事件的返回结果, ...
- PLSQL_基础系列01_正则表达REGEXP_LIKE / SUBSTR / INSTR / REPLACE(案例)
2014-11-30 Created By BaoXinjian
随机推荐
- bacula配置
Bacula Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案.可以对数据进行备份.恢复.以及完整性校验. 功能特点: 支持完全备份,增量备份,差异备份. 支持多种恢复 ...
- DevExpress v18.1新版亮点——ASP.NET篇(三)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET v18.1 的新功能,快来下载试用新版本!点 ...
- L242
They provide a means of keeping track of the thousands of journal papers that are published monthly ...
- Java性能优化之JVM GC(垃圾回收机制)
Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.st ...
- PAT 数列求和-加强版 (20分)(简单模拟)
给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A).例如A=1, N=3时,S=1+11+111=123 输入格式: 输入数字A与 ...
- Locust 测试结果通过Matplotlib生成趋势图
目的: 相信大家对于使用Loadrunner测试后的结果分析详细程度还是有比较深刻的感受的,每个请求,每个事务点等都会有各自的趋势指标,在同一张图标中展示.如下图: 而Locust自身提供的chart ...
- final版——爱阅APP功能说明书
爱阅APP功能说明书 一.引言 以下内容是final版的功能说明书. 新增功能: 1.WiFi传书 2.书友群跳转 3.网址内部打开 4.设置-->关于爱阅 5.设置-->TXT文本的翻页 ...
- IplImage 与mat之间的转换及释放内存
IplImage *x = cvLoadImage(savefilename, ); Mat img(x,true); cvReleaseImage(&x); 完
- 杭电OJ1789、南阳OJ236(贪心法)解题报告
杭电OJ1789http://acm.hdu.edu.cn/showproblem.php?pid=1789 南阳OJ236http://59.69.128.203/JudgeOnline/probl ...
- hdu1428 记忆化搜索(BFS预处理最短路径和+DP+DFS)
题意:有一块 n * n 大小的方形区域,要从左上角 (1,1)走到右下角(n,n),每个格子都有通过所需的时间,并且每次所走的下一格到终点的最短时间必须比当前格子走到重点的最短时间短,问一共有多少种 ...