易语言正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了易语言正则表达式相关的知识,希望对你有一定的参考价值。
<span class=\"emoji emoji1f498\"></span>小明 <span class=\"emoji emoji1f61c\"></span> 怎么用正则表达式把“”小明“”给替换出来
.版本 2
.支持库 RegEx
.支持库 spec
.局部变量 正则, 正则表达式
.局部变量 搜索, 搜索结果, , "0"
.局部变量 文本, 文本型
#常量1 就是被搜索的文本 <span class=\\"emoji emoji1f498\\"></span>小明 <span class=\\"emoji emoji1f61c\\"></span>
文本 = #常量1
正则.创建 (“</span>(.*?) <span class=”, )
搜索 = 正则.搜索全部 (文本)
调试输出 (搜索 [1].取子匹配文本 (文本, 1, ))
参考技术A </span>([\s\S]*?)<span就可以了
那些年我们一起走过正则表达式的坑
一、为什么需要学习正则表达式
正则表达式是一种应用广,灵活度高的一种查找方式,目前在爬虫爬取,对特定的内容的抓包,登录的验证等多个方面都用得上正则表达式,但是由于其实一种灵活的查找,所以我们要付出的代价就是相应使用的复杂,复杂度表现在语法上的不便记忆和应用层面上的易出错,今天我们就来谈谈正则表达式在应用层面上常出现的错误
二、正则表达式常见坑
1、零宽断言理解错误
零宽断言匹配的相当于是一个位置,不是一个具体的内容
示例:
将字符串str="test.com"的.前面的替换为1,也就是str="1.com"
错误示范:
var str="test.com"; console.log(str); var reg=/(?=\.)*/gi; //var re=new RegExp(reg); str=str.replace(reg,"1"); console.log(str);
运行结果是:str="1t1e1s1t1.1c1o1m",我想此时你的心情一定是这样的
从这个运行结果来看,就是在原来的字符串中的每个字符前面插入1,但是这个并不是我们所要求的,造成这样的原因主要是位置弄错了,现在把代码改为如下所示:
var str="test.com"; console.log(str); var reg=/\w+(?=\.)/gi; //var re=new RegExp(reg); str=str.replace(reg,"1"); console.log(str);
这样运行一下就得到了我们所要求的,这个位置我们其实是要求:匹配类型+元字符+零宽断言,错误示范中是零宽断言+元字符这样的一种组合,根本不符合语法的要求,所以错误
2、后向调用理解错误
示例:
匹配字符串str="455 33"
错误示范
var str="455 33"; var test=/\b([1-4]\d{1,2})\s?\1\b/gi; console.log(test.test(str));
这个错误主要的原因是对后向调用的理解有误,后向调用第n次使用时匹配第一次的完全相同的内容,但是不意味着在这里第二次引用前面分组的正则表达式,所以这里只匹配“455 455”这样的字符串
以上是关于易语言正则表达式的主要内容,如果未能解决你的问题,请参考以下文章