扫码关注官方订阅号
1 13110581130 徐小胖 男 2013 计算机科学与技术 2 13110581131 兴小胖 男 2013 计算机科学与技术
我想匹配td内的数据,比如 徐小胖,男
//g上面的正则还可以再优化吗?能更精确的抓取数据吗?谢谢指点 2 0 0 高洛峰 拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,... 全部回复(2) 我来回复 欧阳克2016-11-10 11:32:12 2楼 为什么不用xpath呢?如果是我,我会这样写 str = ' 徐小胖'; re = /]*>(?: )?(.*)/ str.match(re, function(all, m) { consolesole.log(all); console.log(m); }); 赞 +0 添加回复 高洛峰 回复 三叔2016-11-10 11:31:51 1楼 你的问题,一个正则没办法解决。 因为 JS 的正则,加 全局匹配(//g)后,.match() 的结果没法取得 子项结果()submatches) 的结果,说以使用了 .replace 来曲线实现获取 子项结果。 你的文档已经是html了,最好的办法是动态生成虚拟的 js的dom的树,这样操作更灵活 function matchInfo(str){ var result = []; var cache = []; //tr 分组,replace 是为了获取 ([\S\s]*?)中的 ([\S\s]*?)部分。 str.replace(/([\S\s]*?)/gi, function($0, $1){ cache.push($1); result.push([]); return $0; }, ""); //处理每个tr for( var i = 0 ; i ([\S\s]*?)/gi, function($0, $1){ result[i].push($1.replace(" ", "")); }, ""); } return result; }; var str = $("pre").text(); //本页,F12,提取你提问部分的字符 var result = matchInfo(str); console.table(result); //打印结果 /* 会输出分析的结果 */ console.log("徐小胖,男>", result[0][2], result[0][3]); /* 徐小胖,男> 徐小胖 男 */ 赞 +0 添加回复 高洛峰 回复 专题推荐 更多> php数据库如何链接教程 什么是中间件 怎么复制excel表格到另一个表格 编程课主要学什么 热门话题 免费网站成品1688在线进入 免费成品1688网站地址入口 如何知道别人悄悄看过我的朋友圈 免费观看行情的网站大全 币圈免费看行情网站有哪些 PPT一次性怎么插多张图 bgm什么意思 豆包AI在线入口地址 豆包AI在线网页入口地址 在中国怎么把比特币变现 番茄畅听怎么把歌词放在车屏 豆包AI网页版在线入口直达 123456是什么电话 123456是干嘛的 热门教程 更多> 相关教程 热门推荐 最新课程 JavaScript ES5基础线上课程教学 64937次学习 收藏 最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课) 1484960次学习 收藏 phpStudy极速入门视频教程 529754次学习 收藏 独孤九贱(4)_PHP视频教程 1249519次学习 收藏 PHP实战天龙八部之仿爱奇艺电影网站 769630次学习 收藏 最新Python教程 从入门到精通 2726次学习 收藏 JavaScript ES5基础线上课程教学 64937次学习 收藏 PHP新手语法线上课程教学 6428次学习 收藏 支付宝沙箱支付(个人也能用的支付) 4508次学习 收藏 麻省理工大佬Python课程 41271次学习 收藏 最新下载 更多> 网站特效 网站源码 网站素材 前端模板 [表单按钮] jQuery企业留言表单联系代码 [播放器特效] HTML5 MP3音乐盒播放特效 [菜单导航] HTML5炫酷粒子动画导航菜单特效 [表单按钮] jQuery可视化表单拖拽编辑代码 [播放器特效] VUE.JS仿酷狗音乐播放器代码 [html5特效] 经典html5推箱子小游戏 [图片特效] jQuery滚动添加或减少图片特效 [相册特效] CSS3个人相册封面悬停放大特效 [企业站源码] 蓝色商务公司网站(XDcms内核)1.0 [电商源码] DSO2O外卖订餐开源系统源码 [电商源码] 我要服装批发网 [电商源码] QQ号码交易网 [企业站源码] 远航CMS(yhcms)(分站版)2.6.5 [电商源码] 最土团购系统 [企业站源码] weenCompany闻名企业网站系统5.3.0 中英文 GB2312 [电商源码] ShopXP网店系统源码 [矢量素材] 浪漫地中海小镇旅行矢量图片 [矢量素材] 手绘返校季开学季矢量素材 [矢量素材] 万圣节南瓜堆合集矢量素材 [矢量素材] 柔和多彩手绘农场动物矢量合集 [矢量素材] 万圣节鬼屋开放日矢量海报模板 [矢量素材] 天文学与太空背景矢量素材 [矢量素材] 国庆节76周年数字设计矢量模板 [矢量素材] 万圣节月夜横幅合集矢量模板 [前端模板] 驾照考试驾校HTML5网站模板 [前端模板] 驾照培训服务机构宣传网站模板 [前端模板] HTML5房地产公司宣传网站模板 [前端模板] 新鲜有机肉类宣传网站模板 [前端模板] 响应式天气预报宣传网站模板 [前端模板] 房屋建筑维修公司网站CSS模板 [前端模板] 响应式志愿者服务网站模板 [前端模板] 创意T恤打印店网站HTML5模板 关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English php中文网:公益在线php培训,帮助PHP学习者快速成长! 关注服务号 微信扫码关注PHP中文网服务号 技术交流群 QQ扫码加入技术交流群 PHP中文网订阅号 每天精选资源文章推送 PHP中文网APP 随时随地碎片化学习 Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号 PHP学习 技术支持 返回顶部
上面的正则还可以再优化吗?能更精确的抓取数据吗?谢谢指点
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
为什么不用xpath呢?如果是我,我会这样写
str = ' 徐小胖'; re = /]*>(?: )?(.*)/ str.match(re, function(all, m) { consolesole.log(all); console.log(m); });
你的问题,一个正则没办法解决。
因为 JS 的正则,加 全局匹配(//g)后,.match() 的结果没法取得 子项结果()submatches) 的结果,说以使用了 .replace 来曲线实现获取 子项结果。
你的文档已经是html了,最好的办法是动态生成虚拟的 js的dom的树,这样操作更灵活
function matchInfo(str){ var result = []; var cache = []; //tr 分组,replace 是为了获取 ([\S\s]*?)中的 ([\S\s]*?)部分。 str.replace(/([\S\s]*?)/gi, function($0, $1){ cache.push($1); result.push([]); return $0; }, ""); //处理每个tr for( var i = 0 ; i ([\S\s]*?)/gi, function($0, $1){ result[i].push($1.replace(" ", "")); }, ""); } return result; }; var str = $("pre").text(); //本页,F12,提取你提问部分的字符 var result = matchInfo(str); console.table(result); //打印结果 /* 会输出分析的结果 */ console.log("徐小胖,男>", result[0][2], result[0][3]); /* 徐小胖,男> 徐小胖 男 */
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
为什么不用xpath呢?
如果是我,我会这样写
你的问题,一个正则没办法解决。
因为 JS 的正则,加 全局匹配(//g)后,.match() 的结果没法取得 子项结果()submatches) 的结果,说以使用了 .replace 来曲线实现获取 子项结果。
你的文档已经是html了,最好的办法是动态生成虚拟的 js的dom的树,这样操作更灵活
function matchInfo(str){ var result = []; var cache = []; //tr 分组,replace 是为了获取([\S\s]*?)中的 ([\S\s]*?)部分。
str.replace(/ ([\S\s]*?)/gi, function($0, $1){
cache.push($1);
result.push([]);
return $0;
}, "");
//处理每个tr
for( var i = 0 ; i ([\S\s]*?)/gi, function($0, $1){
result[i].push($1.replace(" ", ""));
}, "");
}
return result;
};
var str = $("pre").text(); //本页,F12,提取你提问部分的字符
var result = matchInfo(str);
console.table(result); //打印结果
/*
会输出分析的结果
*/
console.log("徐小胖,男>", result[0][2], result[0][3]);
/*
徐小胖,男> 徐小胖 男
*/