在获取了裁判文书之后,我要从中获取一些关键的信息存入数据库,以便统计查询。案号当然是关键信息之一。我手头有的裁判文书是带有标签的,于是解决方案有两种:一种是通过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夜,问题终得到解决,这时我想起了一句歌词:解决问题的我眼泪掉下来。

最后,感谢桂子,感谢涛哥!

获取裁判文书案号问题的解决过程相关推荐

  1. statfs函数获取大容量磁盘信息速度慢的解决过程

    statfs函数在调用之前,磁盘已经挂载上,因此在利用在挂载的时候加上 -o -usefree参数,使得磁盘信息被写到磁盘上面,statfs函数在调用的时候,直接读取,就可以提高函数调用效率,从而减少 ...

  2. 微信小程序获取并展示公众号推文

    微信小程序获取并展示公众号推文 获取公众号access_token(开发环境) IP白名单设置 获取access_token 小程序前端展示 素材导入云数据库 云函数读取展示 注:笔者是小程序菜鸟,代 ...

  3. 解决Android 10系统获取不到imei号问题

    问题背景: Android 10+系统获取到的imie号为null,有网上说Android 10+取消了获取IMEI的API,这就直接导致我们的程序相关功能不能再Android10设备上的使用.很多博 ...

  4. JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合

    在ajax中经常需要对元素的位置进行精确的定位,此时不仅需要获取元素自身的大小位置等属性.还需要知道页面.浏览器.滚动条等的长度和宽度.因为浏览器的兼容问题,如果使用javascript获取这些数值是 ...

  5. 使用FTP获取RFC文档

    连接FTP服务器主机: ftp FTP.RFC-EDITOR.ORG 21(21是FTP中控制连接的端口号) 输入用户名:anonymous 输入密码:name@host.domain RFC文档是放 ...

  6. c++获取输入数字的位数/获取位数并且将其存入数组中/获取位数存入数组并且利用它解决实际问题

    1.仅仅获取数字的位数: int checkNumber(int num){int weishu = 0;for (int i = 1, num1 = num, shuzu = 0; num / i; ...

  7. URL Scheme获取帮助文档

    URL Scheme获取帮助文档 方式一:小程序管理后台工具生成 一.生成步骤 1. 地址 微信公众平台 2. 扫码登录 3. 登陆后进入首页 「工具」(在右上角)–「生成 URL Scheme」 4 ...

  8. 一键获取推文封面及标题摘要

    一键获取推文封面及标题摘要 此软件可以采用MFC编写 可以一键获取微信公众号推送的封面,标题和摘要 软件会自动保存封面jpg文件在程序同一目录下,同时可以一键复制信息, 下载地址可以点击我头像查看我上 ...

  9. SpringBoot获取自身tomcat端口号的坑 @Value(${server.port})

    今天在获取springboot自带端口时遇到一个坑,找了好久,故此记录一下. 首先 @Value("${server.port}") 获取端口号没有任何问题,那么问题出在那呢,出在 ...

最新文章

  1. dlib 怎么安装vs2017_VS2017(Visual Studio2017) 搭建QT5开发环境
  2. 改变手机浏览器(iPhone/Android)上文本输入框的默认弹出键盘
  3. python祝福祖国代码_国际文交所:9月17日-10月15日《祝福祖国信卡》《澳门爱与祝愿套票》《北京精神封》3个提货转仓公告...
  4. linux中以A开头的函数使用方式历程及详解
  5. codevs3872 邮递员送信(SPFA)
  6. 突破传统生物3D打印技术局限-王秀杰/Charlie C.L. Wang/刘永进团队合作开发新型生物3D打印体系...
  7. 高阶系统怎么用matlab降阶,高阶系统模型一种降阶方法.pdf
  8. 可塑性极强渐变几何空间,设计中不可或缺的素材
  9. 不使用软盘加载驱动安装系统的方法--使用nLite集成驱动
  10. Android调用系统发送短信界面
  11. python字符串方法总结_python字符串使用方法总结
  12. 网络故障排除的五个简单步骤
  13. WPF Ribbon UI插件式开发框架
  14. cadence 旋转快捷键_cadence快捷键
  15. C语言经典编程282例01
  16. 计算机无法对NAS硬盘操作,群晖NAS联机失败不要慌,我用经验告诉你,这样做就能完美解决...
  17. ⾯板数据分析、空间计量、空间杜宾模型学习资料
  18. Java基本面向对象(自学)
  19. WhatsApp客服系统,为什么使用SendWS拓客系统实现WhatsApp客服系统多账号管理?
  20. STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码

热门文章

  1. 兰德公司:零日漏洞平均生存期为6.9年
  2. APP开发的详细流程
  3. 此windows不是正版
  4. Linux下清除磁盘分区及残留raid信息
  5. 两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法
  6. struts中的javascript
  7. 《大明王朝》阴谋诡计,下三路招呼
  8. [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)
  9. Clang调试诊断信息Expressive Diagnostics
  10. 【目标检测】你想知道的手势识别都在这里 【YOLO】网络