获取裁判文书案号问题的解决过程
在获取了裁判文书之后,我要从中获取一些关键的信息存入数据库,以便统计查询。案号当然是关键信息之一。我手头有的裁判文书是带有标签的,于是解决方案有两种:一种是通过dom解析标签获取数据,一种是直接用正则匹配内容。
刚开始的时候,我觉得裁判文书里面的存放案号的标签应该都是一样的,应该会有个id或者class,那么这个问题通过第一种方案:用dom去解析标签获取内容,很简单的就可以解决。但是,没有!啥也没有!而且存放案号的标签还不相同!有span,有div,还有font!作为一个官方的网站做得如此粗糙,简直不敢信!
然后,我就尝试着用第二种方法去解决,一个案件的案号一般都有固定的格式,比如:(2013)民二终字第12号。天真的我以为写个正则表达式就可以了,然后在测试的过程中我发现了,括号有可能是中文括号“(”也可能是英文括号“(",也有可能是没有”号“字,也有可能没有”第“字,于是我的正则表达式就写成了这样:
$preg = '/[〔((]\d\s*\d\s*\d\s*\d*\s*[))〕][\s\S]+字\s*[第]?[\s\S]*[号\s]/U';
再去匹配的时候,发现什么都能匹配到,这个方案也就泡汤了。
这时,经过长时间的各种尝试与思考,还有桂子的帮组,得出一个新的方案:将文书里面的span、font标签替换成div,再用dom去解析div,得到一个数组,再用正则去匹配这个数组中的每个值,这样匹配的成功率就大幅提升,而正则表达式也可以写得十分简单:$preg = '/\d+.*号$/';到最后遇到一个终极问题,匹配之后会出现很多奇怪的空白符,怎么也去不掉。百度了一圈也没找到办法,\s\r\n\t\v之类的试了一个遍也没用,终于扛不住,今天早上的时候去问了涛哥,然后他用了1分钟就解决了,就是把那个空白符复制到代码里面,再用替换函数,我当时是感觉自己蠢蠢哒。。。 晚上回来,经过测试,这个问题终于得到完美解决。
从周五到现在,3天3夜,问题终得到解决,这时我想起了一句歌词:解决问题的我眼泪掉下来。
最后,感谢桂子,感谢涛哥!
获取裁判文书案号问题的解决过程相关推荐
- statfs函数获取大容量磁盘信息速度慢的解决过程
statfs函数在调用之前,磁盘已经挂载上,因此在利用在挂载的时候加上 -o -usefree参数,使得磁盘信息被写到磁盘上面,statfs函数在调用的时候,直接读取,就可以提高函数调用效率,从而减少 ...
- 微信小程序获取并展示公众号推文
微信小程序获取并展示公众号推文 获取公众号access_token(开发环境) IP白名单设置 获取access_token 小程序前端展示 素材导入云数据库 云函数读取展示 注:笔者是小程序菜鸟,代 ...
- 解决Android 10系统获取不到imei号问题
问题背景: Android 10+系统获取到的imie号为null,有网上说Android 10+取消了获取IMEI的API,这就直接导致我们的程序相关功能不能再Android10设备上的使用.很多博 ...
- JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
在ajax中经常需要对元素的位置进行精确的定位,此时不仅需要获取元素自身的大小位置等属性.还需要知道页面.浏览器.滚动条等的长度和宽度.因为浏览器的兼容问题,如果使用javascript获取这些数值是 ...
- 使用FTP获取RFC文档
连接FTP服务器主机: ftp FTP.RFC-EDITOR.ORG 21(21是FTP中控制连接的端口号) 输入用户名:anonymous 输入密码:name@host.domain RFC文档是放 ...
- c++获取输入数字的位数/获取位数并且将其存入数组中/获取位数存入数组并且利用它解决实际问题
1.仅仅获取数字的位数: int checkNumber(int num){int weishu = 0;for (int i = 1, num1 = num, shuzu = 0; num / i; ...
- URL Scheme获取帮助文档
URL Scheme获取帮助文档 方式一:小程序管理后台工具生成 一.生成步骤 1. 地址 微信公众平台 2. 扫码登录 3. 登陆后进入首页 「工具」(在右上角)–「生成 URL Scheme」 4 ...
- 一键获取推文封面及标题摘要
一键获取推文封面及标题摘要 此软件可以采用MFC编写 可以一键获取微信公众号推送的封面,标题和摘要 软件会自动保存封面jpg文件在程序同一目录下,同时可以一键复制信息, 下载地址可以点击我头像查看我上 ...
- SpringBoot获取自身tomcat端口号的坑 @Value(${server.port})
今天在获取springboot自带端口时遇到一个坑,找了好久,故此记录一下. 首先 @Value("${server.port}") 获取端口号没有任何问题,那么问题出在那呢,出在 ...
最新文章
- dlib 怎么安装vs2017_VS2017(Visual Studio2017) 搭建QT5开发环境
- 改变手机浏览器(iPhone/Android)上文本输入框的默认弹出键盘
- python祝福祖国代码_国际文交所:9月17日-10月15日《祝福祖国信卡》《澳门爱与祝愿套票》《北京精神封》3个提货转仓公告...
- linux中以A开头的函数使用方式历程及详解
- codevs3872 邮递员送信(SPFA)
- 突破传统生物3D打印技术局限-王秀杰/Charlie C.L. Wang/刘永进团队合作开发新型生物3D打印体系...
- 高阶系统怎么用matlab降阶,高阶系统模型一种降阶方法.pdf
- 可塑性极强渐变几何空间,设计中不可或缺的素材
- 不使用软盘加载驱动安装系统的方法--使用nLite集成驱动
- Android调用系统发送短信界面
- python字符串方法总结_python字符串使用方法总结
- 网络故障排除的五个简单步骤
- WPF Ribbon UI插件式开发框架
- cadence 旋转快捷键_cadence快捷键
- C语言经典编程282例01
- 计算机无法对NAS硬盘操作,群晖NAS联机失败不要慌,我用经验告诉你,这样做就能完美解决...
- ⾯板数据分析、空间计量、空间杜宾模型学习资料
- Java基本面向对象(自学)
- WhatsApp客服系统,为什么使用SendWS拓客系统实现WhatsApp客服系统多账号管理?
- STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码
热门文章
- 兰德公司:零日漏洞平均生存期为6.9年
- APP开发的详细流程
- 此windows不是正版
- Linux下清除磁盘分区及残留raid信息
- 两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法
- struts中的javascript
- 《大明王朝》阴谋诡计,下三路招呼
- [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)
- Clang调试诊断信息Expressive Diagnostics
- 【目标检测】你想知道的手势识别都在这里 【YOLO】网络