locoz
2020-05-12 10:40:56 +08:00
不存在“多用 re 而少用 soup 、xml 、json 相关解析库”,都是看情况使用的。
结构简单、字段少、不需要考虑复用和增加字段问题,那就正则呗,简单粗暴一行搞完。
结构复杂、字段多、还需要考虑到后续其他地方复用,并且还有可能会需要增加字段,那你用正则不是写到头秃?而且出个问题还很难解决,后续看还不一定看得懂。
再说了,如果数据本来就是 JSON 、XML 、HTML,并且你提取的东西也都存在于结构体里面,那为什么不采用对应的解析库解析成 dict/list 再操作呢?说实在的,就那点性能损耗,根本不值一提,通常还没生成个加密参数花的时间多。用对应的解析库提升出来的开发效率(比如自动按路径生成解析代码)和可维护性(要在某个字段下增加获取子字段)更有价值。
所以通常来说正则的使用场景更多地是补充那些专门的解析库处理不了的场景,比如:
HTML 里嵌了个当成 JSON 使用的 Javascript Object,并且和其他代码混在同一个标签里,那当然是用正则直接提出来再调用 JS 把它转成 JSON 字符串再处理更方便。要不然你一个一个提取字段,后面维护起来直接爆炸。