[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 10# 523066680


    晕,我说几个又不是全部

TOP

本帖最后由 a20150604 于 2019-11-7 21:19 编辑

回复 10# 523066680

我自己用过的最长也较复杂的正则模式, 近几月的事, 之前从未对正则有过这样的需求, 也就从未有过多的学习:
从一段有较固定格式的文本解析出 25 个子项  (语言: javascript)
长而包含多项子匹配(甚至嵌套)的模式写得稍不好, 就极大降低运行效率, 甚至卡死. 简单测试基本无卡死就作罢了
  1. var patt_ZDJY = /任务编号[\::]?\s*(ZD20\d{14}|ZD20\d{12}|LS\d{11}|)\s*[\|]?[\s\S]*请求服务[\::]?\s*((?!车架号)\S*|(?!车架号)\S[\s\S]*\S|)\s*车架号[\::]?\s*([\da-z]{17}|\**[\da-z]{6}|)\s*\S*[\s\S]*车牌号[\::]?\s*(\S*)\s*车主姓名[\::]?\s*(\S*)\s*车主电话[\::]?\s*(1\d{10}|)\s*(?:车辆品牌)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*车型[\::]?\s*((?!备注)\S*|(?!备注)\S[\s\S]*\S|)\s*(?:备注)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*请求地址[\::]?\s*([^\s\,,]+(?![,,,])|[^\s\,,][\s\S]*[^\s\,,]|)[,,\s]*位于[\::]?\s*\S*\s*地址补充[\::]?\s*(\S*|\S[\s\S]*\S)\s*目的地地址[\::]?\s*(\S*|\S[\s\S]*\S)\s*目的地补充[\::]?\s*(\S*|\S[\s\S]*\S)\s*服务商名称[\::]?\s*(\S*|\S[\s\S]*\S)\s*服务车辆[\::]?\s*(\S*)\s*服务人员工号[\::]?\s*(\S*)\s*服务人员电话[\::]?\s*(1\d{10}|)\s*[\s\S]*服务人员到达事发地[\::]?\s*(\S*|\S[\s\S]*\S)\s*实拖目的地[\::]?\s*((?!(?:故障类型|指定子机构))\S*|(?!(?:故障类型|指定子机构))\S[\s\S]*\S|)\s*(?:故障类型)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*(?:故障类型确认)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*(?:指定子机构)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*结算类型[\::]?\s*(\S*|\S[\s\S]*\S)\s*(?:服务状态)?[\::]?\s*(\S*|\S[\s\S]*\S)\s*(?:服务是否成功)?[\::]?\s*(\S*)\s*(?:服务评价)?/i;
复制代码

TOP

LZ 既然有更好的方法, 可以在帖子里直接写份更简单的代码贴出来.
大家发现直接用内置的 xml 接口能很好地完成, 自然就都会去用了.


回复 8# 老刘1号
伸手党这个问题确实...

论坛确实太宽容了, 与之形成鲜明对比的是我混的 tg Python 群, 伸手党问题基本不受理, 搞不好还会直接被 ban ( 不过这个感觉有点走到另一个极端了... ( 嘛, 毕竟流行语言不怕没人

不过学习氛围这个事我觉得可能无解了, bat 毕竟已经没落了....
现在的回答都是清一色混编
其实也可以理解: 既然可以用其他语言轻松解决的事情, 为什么要去钻研那些奇技淫巧呢?
如果选择学习其他语言, 那为啥要在批处理论坛提问呢

而且 bat 能探索的地方基本上都被前人探索遍了
老人与新人的差距极大, 对老人来说 bat 基本上没有什么秘密了
这种情况下根本就难以产生高质量的讨论, 毕竟一般都是水平相近才能讨论地起来

唉, bat 就好像已经走到尽头了一样

TOP

本帖最后由 523066680 于 2019-11-7 20:32 编辑

坐和放宽~
我最近都是用相结合的方式

          # 金额信息合计, 此处 freight 为平台运费
          $info->{price}    = $dom->at("td.product-price")->text =~ /([\d\.]+)/ ? $1 : 0;
          $info->{freight} = $dom->at("td.shipping-price")->text =~ /([\d\.]+)/ ? $1 : 0;
          $info->{adjust}   = $dom->at("td.change-price")->text =~ /([\d\.]+)/ ? $1 : 0;
          $info->{discount} = $dom->at("td.discount-price")->text =~ /([\d\.]+)/ ? $1 : 0;
          $info->{amount} = $dom->at("td.order-price")->text =~ /([\d\.]+)/ ? $1 : 0;

          # 待定
          $info->{escrowCom} = $dom->at("td.fee")->text =~ /([\d\.]+)/ ? $1 : 0;
          $info->{unionCom} = "-";
          $info->{estimate} = $dom->at(".fund-bd td.amount")->text =~ /([\d\.]+)/ ? $1 : 0;


三目运算符用来避节点未定义的坑

TOP

楼主提到的“正则滥用”我不赞同。
正则处理 xml 文档只是众多方法之一,何来“滥用一说”?
顶楼所给出的例子,其示例大部分都是“非标准”的 xml 文档,用 System.xml.XmlDocument 对象处理的话会报错;另外,smss 这个 ID 的要求基本是“非标准”修改,比如删除回车换行,删除空格等等,这个不用正则还真不好办。
关于注释的问题,我并不反对适当加注释,但注释会浪费编写者时间,有时甚至得力不讨好,我只想说:懂的人秒懂,不懂的人有注释也不懂。如果不懂调用 .net 方法,不懂 XPath 查询,有注释一样云里雾里。

TOP

这样,真正来论坛学习知识的会越来越少,伸手党会越来越多。
当然,这个恶性循环的一个重要环节——论坛元老们对于伸手党的”慷慨相助“依旧运行正常,这就会导致论坛的气氛越来越差。
我寻思,现在技术都这么不值钱了么?
还是说,论坛没有伸手党就开不下去?

某位坛内元老以前说过,他想营造一个互帮互助的环境,
但是这互帮互助的环境是一个不用学习,只要提出需求就有人回答的”伸手乐园“吗?
这互帮互助的环境是一个提问不用思考,”在线多对一零基础教学“的环境吗?

TOP

作为一个编程论坛,显然坛内的学习氛围并不浓,
甚至直白的说,基本没有。
一个新人出现了问题,打开论坛一看,全是不动脑子发帖求助的帖子,
那么我想,他也不会”傻傻的“去学习相关知识,而是注册个账号直接免费发问。
有人回答,他就会继续发问,所以出现了4级士官的老伸手党。(以前还有个6级的被我怼走了)
甚至某些伸手党脑子不太灵活,以为这是理所应当的,在群里和热心群员对线。

TOP

回复 3# 老刘1号

无论他们为什么样的帖子作解答, 我相信他们希望这个论坛还有生机, 谢谢他们的坚持!

TOP

这个论坛与 dostips 风格差异比较大

问题:
BAT 是便宜速干的胶水 还是(甚至是无所不能的)瑞士军刀?
我只是再次提出这样的问题, 不予评论不同的观点, 所有看到的人都自有自己的想法

观点:
我从不认为 BAT 无所不能, 或者有人可以用机器语言写出 OS, 如果他喜欢这样做的话
我极少用 BAT 解决实在的问题, 即使真解决问题时, 也只是用了 最常用的命令最常用的功能而已

TOP

几个坛内元老级人物24小时出现在伸手党问的问题下,
而却对实质改善论坛社区的帖子(比如这个http://www.bathome.net/thread-54156-1-1.html)视而不见,没有什么基本的鼓励措施(如高亮、置顶、挂在首页)、甚至加分都没有,
论坛的老人为什么越来越少,由此可见一斑。
1

评分人数

TOP

讽刺的是在这个论坛中,伸手党很受欢迎,
管理、几个坛友带头回答,
这个论坛都快成“批处理/vbs/js/powershell无偿代写论坛“了。

TOP

顺一句,vbs的xmlDOM
  1. Set objXmlDom = CreateObject("Microsoft.XMLDOM")
复制代码
用法见:https://www.runoob.com/dom/dom-tutorial.html
实例见:http://www.bathome.net/thread-54111-1-1.html

TOP

返回列表