E2 表达式
用于处理文本的表达式,比如获取"文本"前的几个字,可以使用 .tz(文本) 获取到 "用于处理" 四个字。 E2函数名使用中文拼音首字命名,对不懂开发的人群也能轻松操作。
E2 还能进行数组操作,在M浏览器里轻站或虫子获取列表的函数就需要获取数组。为了更容易了解并使用函数,一般处理文本的函数均以 t 开头,比如取文本左边的 tz , t = 文本,z 是左的拼音头,然后就能知道取文本右边函数为 ty 了。 处理数组的函数 以 i 开头,如 .ij(aaa) ,j = 加, 往数据中加入一行数组,值为 aaa 。
以下函数仅支持 2.3.5 及以上版本支持
文本操作类:
.tz() .ty() 取文本左、右数据。
.tz2() .ty2() 从后读取判断值文本并取判断值左、右(前、后)数据。 若内容为 abbacc 时使用 .ty(a) 取得值为 bbacc , 使用 .ty2(a) 取得值 为 cc 。
.t() 删除HTML标识,无需提供参数,如内容为 <p>a</p>b<p> 时去除html代码获取正文, 直接使用 .t() 即可,最终得到 ab
.tj() 添加内容,如已有 ab 获取 abcd : .tj(cd)
.tzc() 参数为数字,如 tzc(5) 如果当前操作值字数大于 5 就取前5个字,少于则取全部。所以这里 zc 记最长。若操作值为 ABCDE 使用 .tzc(3) 得到 AB
.tsk() 无参数,去首尾空,qswk 再加上 t 太长了不好记,就首空,意思就去首尾空,就是去掉操作首尾的空格字符
.th() 替换,参数为 欲被替换文本##替换文本。如内容为 ABC 时 需将 B 改成 2 ,可以使用 .th(B##2) 。 欲需将其置空不要,可以直接使用 .th(B) ,将得到 AB 。 同时 th 中欲被替换文本是支持正则表达式的,如果要替换的内容和正则通配符冲突的话,就需要写转义了。 比如相对复杂的内容 111ADGDGS333 将中间的英文字替换为333,可用 .th([A-Z]+##333) 。 如果你并不知道哪些是正则匹配符,建议使用 .th2() 唯一不同的是 th2 中欲被替换文本是不支持正则匹配的。
.tx() x 意思是 新,新的概念在下面的数组里也有相应的函数。 M浏览器扩展使用E2时都是要先定义源内容的,比如数据源爬虫就是读取到的网络内容,文本就是定义的文本。 这里假设源内容是 xByyEzz , 需要获取 E 后面的值和 B 前面的值(其中内容 x y z 会动态变化),注意是E后面+B前面。 新的概念就是存储之前操作的值不变让后面操作的函数处理的是源内容。理解这句话应该知道怎么做了,分三步走,获取 E 的后面值 ty2(E) -> 存储并将当前操作内容定义为源内容 tx() -> 获取 B 前面值 .tz(B)。
快速捋一篇, 源内容 xByyEzz 在使用 E2 时会自动将其转为操作值,跟着使用 ty2(E) ,取E后面就是将操作值置为 zz , 接着使用 .tx() 存储操作值并将操作值设为源文本 xByyEzz , 跟着 tz(B) 得到 x 。后面没有函数了,就将前面存储的值和操作值输出,最终得到 xyyzz 。
.byt() 用于HTML,匹配标签值数据,返回整个标签项目列表
<div><h2>我是标题</h2></div>
<h3>/CCCC</h3>
<p>标题BBBB</p>
取第1及第3行:.byt(标题);获取 “<p>标题BBBB</p>” :.byt(标题BBBB) 或者 .byt(标题).i(1)
文本操作理解了,下面的就简单介绍,如还不懂,欢迎加群讨论。
数组操作类:
.i(正数) 获取数组中第一个内容,从0开始,如获取第一个值 就 .i(0) ,第三个值 .i(2) 以此类推
.i(负数) 从数组尾部开始寻找,-1 即,数组倒数第一个值。 -2 数组倒数第二值,以此类推
.i(数,数) 取数组范围,理解了正数负数的用法这里的数可以自由填正数也可以负数,怎么好判断怎么来, 如有数组 [ab,ac,ad,ae] ,获取 ac,ad,ae ,即排除第一个: .i(1,-1) ,排除最后一个: .i(0,-2)
.ij(添加的文本) 将"添加的文本" 加入到数组中,比如数组已经有 [aa,bb,cc] 操作之后就等于 [aa,bb,cc,添加的文本]
. is ()正则匹配通过的数组会被删掉
. il ()正则匹配通过的数组会被保留
.ix() 存储数组,接着和 tx 类似,将操作值改为原文本。 注意数组操作时接着操作其它函数
.it(分割符) E2里,i 表示数组,t 表示文本。将数组合并为文本且中间以参数分隔符作填充,若不填入参数则无分隔符
正则表达式
.z() 参数中若含括号必须添加转义给E2识别,若正则表达式中括号比较多在E2里看起来比较费眼,可在参数前后添加两个@标识内容为参数。 比如正则为 (a\(b\)c)|(x\(y\)z) ,就是匹配 a(b)c 或 x(y) z, 在E2里必须给括号再添加一个转义符 \ ,即 .z(\(a\\(b\\)c\)|\(x\\(y\\)z\)) 这样就看起来很乱,那如果在参数两则加双@ 就可以写成 .z(@@(a\(b\)c)|(x\(y\)z)@@) 看起来相对会比较和谐。
.z2() 匹配子表达式,同上一些编写,子表达式即为 正则中()里面的值,匹配后可以使用 .i() 获取指定括号内容。
注意若不使用@@全文转义符时,记得在内容括号前加 转义符 右斜杠!!!
明明18岁
丽丽17岁
李娜娜19岁
a 获取 “明明18岁”:.z(.{2,3}\d{2}岁)
b 获取娜娜几岁(19):.z(.{2,3}\d{2}岁).i(2).z2(.{2,3}\(\d{2}\)岁)
a中若接口为返回文本,则相当与后方自动加了 .i(0) 函数,即取数组的第一个文本(数组计次从0开始)
b中先是用 .z() 全局匹配取得第3条数据,后用 .z2() 取子表达式的年龄数字
点这里查看正则语法 : https://www.runoob.com/regexp/regexp-syntax.html
CSS选择器
.css(选择器语法) 返回匹配得到的数组,匹配语法说明:https://blog.csdn.net/weixin_34375233/article/details/89656172
.a(属性名) 返回属性值,如 a 标签的 href 属性(跳转地址): .a(href) 。 img标签的图片属性src(图片地址):.a(src)
.get(选择器语法) 用法与.css()相同
XML解析器
.xml(标签名) 和 .css 用法一致
JSON解析器
.json(参数名) 不管是普通对象还是数组对象,都这个命令。数组对象返回数组、文本对象返回文本(也可以将其视为只有一个子项的数组)。
注意此处函数不同于 get,不可以直接在一个函数中进行上下级读取,json 对象可以是普通对象,也可以是数组。
{
"name": "BeJson",
"es": {
"a": "科技园路.",
"b": "中国"
},
"arr": [
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "Google",
"url": "http://www.google.com"
}
]
}
获取 中国:.json(es).json(b);也可以匹配 函数 .i(v) 获取数组中的数据,获取 Google 的 url: .json(arr).i(1).json(url)
高级命令
.d(v) 将文本进行URL解码,v == utf8、gbk等。
.en(v) 将文本进行URL加密,v == utf8、gbk等。
.dn64() 将文本进行Base64解码。
.en64() 将文本进行Base64加密。
.bt() 读取磁力链(40个连续字符)并生成磁力链格式。
.var(变量名) 引用变量和定义的常量
.c() 取回源码,可选带参,带参则先将参数加入文本,后取回源码
.ct() 即连接该文本。类似上面 .c 带参,但不取回源数据
.or() 若前面规则已读到数据则不执行右边规则,否则重置执行位置继续执行规则。
.xu() 不返回任何数据,继续以列表方式存入右则读到的数据。即左右两则数据均取
.st(参数) 将数组合并为文本,数组之间填充参数值
.all() 输出全部
.dx() 对数组进行倒序输出
.fg(参数) 分割文本返回数组,若参数为空则默认分割换行
E2中运用JS小技巧:
//@js=
//之后就可以加载js语句了
@js=getresult();
function http(str){
try{
//1.2.8之前版本,取远程url的http文本
return M.http(JSON.stringify({url:str}));
}catch(err)
{
//2.x版本,取url文本
return getHttp(JSON.stringify({url:str}));
}
}
function varSelf(str){
try{
//1.2.8之前版本,取E2定义的变量
return M.var(str);
}catch(err)
{
//2.x之后版本,取E2定义变量
return getVar(str);
}
}
function getresult(){
//加载http内容
var html=http(varSelf("url"));
//正则匹配
var temStr=html.match(/http.*?html/)[0];
//文本替换
var tem=temStr.replace(/abcd\.com/g,"ggg.com");
return tem;
}
补充
@js=e2Rex(getVar("CODE"),".z2(,\\(.*\\))");
特殊链接:
dia:qm 以弹出对话框方式打开轻站
m:qm 以页面方式打开轻站
m:setup 打开设置页面
m:bookmark 打开书签页面
m:history 打开历史页面
m:card 打开卡片
m:search?text=此处补充内容 打开搜索页面
轻站链接调用 播放器
q:播放器?url=http媒体地址
链接规则可以用 .c(q:播放器?url=)后面加地址
原教程地址:https://www.nr19.cn/6.html