365 体育在线网址_365bet体育线上平台_谁有365体育在线网址新手入门导读[视频教程]365 体育在线网址_365bet体育线上平台_谁有365体育在线网址基础视频教程[视频教程]VBS基础视频教程
[365 体育在线网址_365bet体育线上平台_谁有365体育在线网址文件精品]365 体育在线网址_365bet体育线上平台_谁有365体育在线网址版照片整理器[365 体育在线网址_365bet体育线上平台_谁有365体育在线网址文件精品]纯365 体育在线网址_365bet体育线上平台_谁有365体育在线网址备份&还原驱动在线第三方下载
返回列表 发帖

[技术讨论] 对论坛的建议,还有关於滥用正则

本帖最后由 uhjjhjff11d 于 2019-11-7 18:01 编辑

用一句话让论坛里的某些人节省上千小时。(至少上百小时)
不要用正则和匹配解析 xml 文件,powershell 本身有 xml 相关的接口了,正则是拿来处理无格式的文件的。

- 如果是特殊的格式,标题注明你要处理的格式,这样没有兴趣的人就不用浪费时间点进去看了
- 论坛的附加档案功能貌似有点问题,只能把很长的测试文件贴出来,导致帖子难以阅读
- 编辑帖子有时候会发布之後没有更新
- 代码没有注释导致新手完全放弃看代码,只求拿来套 (这个不强求了,毕竟大家是免费分享)
- 有些代码根本是错的(只解决3成的问题),还会影响到其它档案,但是标题被标记为已解决

前情提要,我是最近注册的,之前回答过3个问题,後来觉得每次回答问题,都必须忍受时间被浪费的愤怒,所以我把回覆删除了。(所以我并不是毫无贡献,而且那些问题太基础了,我答不答也没什麽差别)

建议删除网路一搜到处都有,5行内可以解决的问题。因为论坛看起来没有算法来很好的排序,这样帖子会让有价值的内容更难被看到。a b c 三个功能都是现成的,全部合起来只需要5行。唉,懒得写,丢到论坛浪费别人时间,反正不用钱。

以下只是举例,我针对的是文字,不是针对个人。
如果他只要区分2个条件,这个问题就是一个 if else 3行解决。而且网路上搜索的到一堆说明。
请教如何用powershell实现bat的if...goto的效果?

smss 用户,他的许多问题思路就是混用 dotnet batch powershell 正则,然後用来匹配 xml。明明查查文档调调 api 就行了,他完全就是领着大家造三角形的轮子。用正则匹配来解析 xml 是邪道,获得 xml 的属性值这样一个功能搞了30行代码,这代码价值扣除阅读成本还有维护成本之後价值应该是负的。而且这些帖子内的代码只要 xml 有变化有很高的机率会出错。

求PowerShell批量计算文本指定数值后替换原值

[已解决]20元修改归类并正则匹配所有属性值

[文本处理] 怎样批量计算后替换文本内容

100元人民币 求bat或Powershell处理文本内容【已解决】
5

评分人数

顺一句,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

讽刺的是在这个论坛中,伸手党很受欢迎,
管理、几个坛友带头回答,
这个论坛都快成“365 体育在线网址_365bet体育线上平台_谁有365体育在线网址/vbs/js/powershell无偿代写论坛“了。

TOP

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

评分人数

TOP

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

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

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

TOP

回复 3# 老刘1号

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

TOP

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

TOP

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

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

TOP

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

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;


三目运算符用来避节点未定义的坑
综合型编程论坛
Writing Code That Nobody Else Can Read.

TOP

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


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

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

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

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

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

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

回复 10# 523066680


    晕,我说几个又不是全部

TOP

本帖最后由 老刘1号 于 2019-11-7 22:02 编辑

回复 11# bailong360


    其实可以大推各种强力第三方的教程,毕竟批的第三方库还是丰富且强大的,
特别如:文本处理可以用各种linux shell命令的win32版本,图像处理可以用imagemagick,媒体流处理可以用FFMPEG。
这些工具要用其它语言调用,学习成本肯定比365 体育在线网址_365bet体育线上平台_谁有365体育在线网址高,实现也不一定简洁。

论坛现在就是,第三方工具封装好的一大堆,没人用。
回答清一色用混编我私以为是要给伸手党一个触手可得的运行环境做出的无奈之举。

批也有一些得天独厚的优点,如文件管理,
比如深度优先遍历一个目录,来一句dir就行了,其它语言可能还要来个递归
我个人认为,批用来管理文件还是挺舒服的
1

评分人数

    • ivor: 服务器用第三方工具有风险,还是尽量用系统 ...技术 + 1

TOP

回复 12# a20150604


    这么庞大的正则……
正则这么复杂的规则,还要匹配这么长的条件,cpu处理起来困难很正常,
正则写的太长也不利于阅读,

一般正则超过15个字符的话就要考虑用条件判断、循环什么的来代替了,再长了咱也难受,cpu更受不了

TOP

返回列表