注册 登录
发贴工具
查看: 30|回复: 0
打印 上一主题 下一主题

[发贴软件现成脚本] AIWROK软件常见正则方法集合小结

[复制链接]

2257

主题

2305

帖子

1万

积分

积分
13746
跳转到指定楼层
楼主

//适用本文档ES5系统安卓 JavaScript引擎Rhino
const 字符 = {
/**
* 匹配查找字符串中的内容
* @param {string} str 需要查找的字符串
* @param {string|RegExp} searchvalue 需要查找的字符串或正则表达式
* @returns {Array|null} 成功:返回包含匹配结果的数组,失败:返回null
* @example
* // 示例1:查找字符串
* var str = "How are you doing you today?";
* var fgh = 字符.匹配查找(str, 'you');
* printl(fgh); // 输出: ["you", "you"]
*
* // 示例2:使用正则表达式查找
* var str = "How are you doing you today?";
* var fgh = 字符.匹配查找(str, /you/gi);
* printl(fgh); // 输出: ["you", "you"]
*/
匹配查找: function(str, searchvalue) {
try {
// 参数验证
if (typeof str === "undefined" || str === null) {
console.error("[字符.匹配查找] 错误:str参数未定义或为null");
return null;
}
if (typeof searchvalue === "undefined" || searchvalue === null) {
console.error("[字符.匹配查找] 错误:searchvalue参数未定义或为null");
return null;
}

// 转换为字符串
str = String(str);

// 如果searchvalue是字符串,转换为全局正则表达式
if (typeof searchvalue === 'string') {
searchvalue = new RegExp(searchvalue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
}
// 如果是正则表达式但没有全局标志,添加全局标志
else if (searchvalue instanceof RegExp && !searchvalue.global) {
searchvalue = new RegExp(searchvalue.source, searchvalue.flags + 'g');
}

// 执行匹配查找操作
let matches = str.match(searchvalue);

// 如果没有找到匹配项,返回null
if (!matches || matches.length === 0) {
return null;
}

return matches;
} catch (error) {
console.error(`[字符.匹配查找] 错误:${error}`);
return null;
}
},

/**
* 匹配索引,查找字符串中内容的位置
* @param {string} str 需要查找的字符串
* @param {string|RegExp} searchvalue 需要查找的字符串或正则表达式
* @returns {Array|null} 成功:返回包含匹配位置索引的数组,失败:返回null
* @example
* // 示例1:查找字符串位置
* var str = "How are you doing you today?";
* var fgh = 字符.匹配索引(str, 'you');
* printl(fgh); // 输出: [8, 19]
*
* // 示例2:使用正则表达式查找位置
* var str = "How are you doing you today?";
* var fgh = 字符.匹配索引(str, /you/gi);
* printl(fgh); // 输出: [8, 19]
*/
匹配索引: function(str, searchvalue) {
try {
// 参数验证
if (typeof str === "undefined" || str === null) {
console.error("[字符.匹配索引] 错误:str参数未定义或为null");
return null;
}
if (typeof searchvalue === "undefined" || searchvalue === null) {
console.error("[字符.匹配索引] 错误:searchvalue参数未定义或为null");
return null;
}

// 转换为字符串
str = String(str);

// 准备正则表达式
let regex;
if (typeof searchvalue === 'string') {
// 如果是字符串,转换为正则表达式并转义特殊字符
regex = new RegExp(searchvalue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
} else if (searchvalue instanceof RegExp) {
// 如果已经是正则表达式,确保有全局标志
if (!searchvalue.global) {
regex = new RegExp(searchvalue.source, searchvalue.flags + 'g');
} else {
regex = searchvalue;
}
} else {
console.error("[字符.匹配索引] 错误:searchvalue类型不正确");
return null;
}

// 查找所有匹配的索引
let indices = [];
let match;

// 重置lastIndex以确保从头开始搜索
regex.lastIndex = 0;

while ((match = regex.exec(str)) !== null) {
indices.push(match.index);

// 防止零长度匹配导致的无限循环
if (match.index === regex.lastIndex) {
regex.lastIndex++;
}
}

// 如果没有找到匹配项,返回null
if (indices.length === 0) {
return null;
}

return indices;
} catch (error) {
console.error(`[字符.匹配索引] 错误:${error}`);
return null;
}
}
};

// 示例1:使用字符串查找
var str = "How are you doing you today?";
var fgh = 字符.匹配查找(str, 'you');
printl(fgh); // 输出: ["you", "you"]

// 示例2:使用正则表达式查找
var str = "How are you doing you today?";
var fgh = 字符.匹配查找(str, /you/gi);
printl(fgh); // 输出: ["you", "you"]

// 示例3:使用字符串查找索引
var str = "How are you doing you today?";
var fgh = 字符.匹配索引(str, 'you');
printl(fgh); // 输出: [8, 19]

// 示例4:使用正则表达式查找索引
var str = "How are you doing you today?";
var fgh = 字符.匹配索引(str, /you/gi);
printl(fgh); // 输出: [8, 19]

1. 整体结构

这是一个名为字符的对象,包含两个主要方法:

  • 匹配查找: 用于查找字符串中的匹配内容
  • 匹配索引: 用于查找匹配内容在字符串中的位置

2. 匹配查找方法 (字符.匹配查找)


字符.匹配查找(str, searchvalue)

参数说明:

  • str: 要搜索的目标字符串
  • searchvalue: 搜索条件,可以是字符串或正则表达式

功能特点:

  1. 参数验证:

if (typeof str === "undefined" || str === null) {
    console.error("[字符.匹配查找] 错误:str参数未定义或为null");
    return null;
}
  • 检查参数是否为空或未定义
  • 出错时返回null并打印错误信息
  1. 字符串处理:

str = String(str);
  • 将输入转换为字符串,确保可以进行匹配操作
  1. 搜索条件处理:

if (typeof searchvalue === 'string') {
    searchvalue = new RegExp(searchvalue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
}
  • 如果是字符串,转换为正则表达式并转义特殊字符
  • 如果是正则表达式,确保有全局标志
  1. 执行匹配:

let matches = str.match(searchvalue);
  • 使用JavaScript的match方法进行匹配
  • 返回所有匹配项的数组

3. 匹配索引方法 (字符.匹配索引)


字符.匹配索引(str, searchvalue)

参数说明:

  • 与匹配查找方法相同,但返回匹配位置而不是匹配内容

功能特点:

  1. 参数验证:与匹配查找相同
  2. 正则表达式处理:

let regex;
if (typeof searchvalue === 'string') {
    regex = new RegExp(searchvalue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
}
  • 将搜索条件统一转换为正则表达式
  • 处理特殊字符和全局标志
  1. 查找位置:

while ((match = regex.exec(str)) !== null) {
    indices.push(match.index);
}
  • 使用exec方法循环查找所有匹配
  • 记录每个匹配的位置(索引)
  1. 防止死循环:

if (match.index === regex.lastIndex) {
    regex.lastIndex++;
}
  • 处理零长度匹配的特殊情况
  • 确保搜索指针前进

4. 错误处理

两个方法都包含完整的错误处理机制:


try {
    // 方法主体
} catch (error) {
    console.error(`[字符.xxx] 错误:${error}`);
    return null;
}
  • 使用try-catch捕获所有可能的错误
  • 出错时返回null并打印详细错误信息

5. 使用示例

代码包含四个完整的示例:


// 示例1:使用字符串查找内容
var str = "How are you doing you today?";
var fgh = 字符.匹配查找(str, 'you');
printl(fgh);  // 输出: ["you", "you"]

// 示例2:使用正则表达式查找内容
var fgh = 字符.匹配查找(str, /you/gi);
printl(fgh);  // 输出: ["you", "you"]

// 示例3:使用字符串查找位置
var fgh = 字符.匹配索引(str, 'you');
printl(fgh);  // 输出: [8, 19]

// 示例4:使用正则表达式查找位置
var fgh = 字符.匹配索引(str, /you/gi);
printl(fgh);  // 输出: [8, 19]

6. 代码特点

  1. 健壮性
  • 完整的参数验证
  • 全面的错误处理
  • 特殊情况的处理(如零长度匹配)
  1. 灵活性
  • 支持字符串和正则表达式两种搜索方式
  • 自动处理正则表达式标志
  • 转义特殊字符
  1. 可维护性
  • 清晰的代码结构
  • 详细的注释和文档
  • 统一的错误处理方式
  1. 使用便利
  • 简单直观的API
  • 完整的使用示例
  • 清晰的返回值约定

这段代码提供了一个完整的字符串查找解决方案,既可以获取匹配的内容,也可以获取匹配的位置,适用于各种字符串处理场景。

AIWROK软件常见正则方法集合小结 群发软件发帖工具

AIWROK软件常见正则方法集合小结 群发软件发帖工具     AIWROK软件常见正则方法集合小结 群发软件发帖工具


untoAIWORK类语聊智能聊天机器人带意图识别例子演示nextAIWROK软件应用方法集合小结
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖