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


sed试试这样
  1. sed -r "s#\"path\".*:\x22([^\x22]+\\\\browser\\\\features).*#\1#" 1.txt > 2.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# kidzgy


这样可以吗
  1. (?<=path\"\:\")[^,]+(\\\\browser\\\\features)
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 hfxiang 于 2022-11-28 11:49 编辑

回复 5# kidzgy


   

下载gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe
执行
  1. gawk "{print gensub(/^.*\"path\":\"(.+\\\\browser\\\\features).+\".*$/,\"\\1\",\"g\")}" extensions.json>con
复制代码
结果
  1. D:\\Firefox106\\browser\\features
复制代码

TOP


或者我换种提法,以【\\browser\\features】为基准,怎么向前匹配最近的一个【path】?如图所示,红色区域是我最终想匹配的内容。
为什么我这里懒惰匹配,还能匹配到最开头的【path】?
  1. (?<=path\"\:\").*?(\\\\browser\\\\features).*?
复制代码
  1. "path":"D:\\Firefox106\\Profiles\\extensions\\s3google@translator.xpi","path":"D:\\Firefox106\\browser\\features\\screenshots@mozilla.org.xpi"
复制代码

TOP

关键是把上上楼说的如能给出后面的内容给出来。
不管什么语言,正则表达式都是一个东西,最多有点细微差别
补充一句,把会影响通用性的反例加进去,以防写好后再返工

TOP

回复 2# hfxiang


    sed似乎不支持懒惰模式。

TOP

估计使用fr.exe( find - replace )的人不很多。如用“正则表达式”处理文档,建议使用gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )或者sed( http://bcn.bathome.net/tool/4.8/sed.exe ),这2工具在网上的资料相对容易找到。如能更清晰列出处理前的文档及处理后的文档,并附修改说明,应该能有解决方案。

TOP

返回列表