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


   你一楼的不是已经实现了吗

TOP

本帖最后由 小白龙 于 2022-11-22 20:10 编辑

回复 16# idwma


一楼不是用的正则, 用的split实现的, 二楼用的开关,

我想用纯正则实现相同的功能, 正则比较通用, 我用的那个软件没有 split 功能, 只有正则, 查找和替换功能

TOP

回复 17# 小白龙


    不会呀

TOP

来练练手
  1. $s= @'
  2. Key 1
  3. Hello 1
  4. World 1
  5. ---
  6. Key 2
  7. Hello 2
  8. World 2
  9. ---
  10. Key 3
  11. Hello 3
  12. World 3
  13. '@
  14. $pattern = "(([\S\s]+?)[\r\n]+---[`r`n]?)"
  15. $out = ( $s + "`r`n---" | Select-String -Pattern "(([\S\s]+?)[\r\n]+---[\r\n]?)" -AllMatches ).Matches.Value -replace "---" ,''
  16. $ss = 'sss '
  17. $arr=@()
  18. $n = 65
  19. $out |% {
  20.     $a,$b = ($_ -replace '[\r\n]+', "`n" |Select-String -Pattern "(.+?)\n"  -AllMatches).Matches.Value
  21.     $c = [char](++$n - 1)
  22.     $arr += "{$c}={$($c)v}[]"
  23.     "$ss $c="
  24.     ' ' + $a.trim()
  25.     ' ' + $($b -join " ").trim()
  26.     "sss ${c}v="
  27.     ' ' + "${c}v.ffff"
  28. }
  29. 'sss kv=@' + '"{0}"' -f ($arr -join '').TrimEnd("[]")
  30. 'DDD(kv)'
复制代码

TOP

回复 19# terse

多谢大佬, 结果有点问题, 另外, 每对之间有个空行
另外键值B的结果应该是这样
  1. sss B=
  2. Key 2
  3. sss Bv=
  4. Hello 2
  5. World 2
  6. Bv.fff
复制代码

TOP

本帖最后由 terse 于 2022-11-24 18:46 编辑

回复 20# 小白龙
30行和29行对调一下呢?另外要空行的话 去掉trim()试一下
  1. $s= @'
  2. Key 1
  3. Hello 1
  4. World 1
  5. ---
  6. Key 2
  7. Hello 2
  8. World 2
  9. ---
  10. Key 3
  11. Hello 3
  12. World 3
  13. '@
  14. $pattern = "(([\S\s]+?)[\r\n]+---[`r`n]?)"
  15. $out = ( $s + "`r`n---" | Select-String -Pattern "(([\S\s]+?)[\r\n]+---[\r\n]?)" -AllMatches ).Matches.Value -replace "---" ,''
  16. $ss = 'sss '
  17. $arr=@()
  18. $n = 65
  19. $out |% {
  20.     $a,$b = ($_  |Select-String -Pattern "(.+?)\n"  -AllMatches).Matches.Value
  21.     $c = [char](++$n - 1)
  22.     $arr += "{$c}={$($c)v}[]"
  23.     "$ss $c="
  24.     ' ' + $a.trim()
  25.     "sss ${c}v="
  26.     ' ' + $($b -join " ").trim()
  27.     ' ' + "${c}v.ffff"
  28. }
  29. 'sss kv=@' + '"{0}"' -f ($arr -join '').TrimEnd("[]")
  30. 'DDD(kv)'
复制代码
1

评分人数

TOP

回复 21# terse


   空行还是没有

TOP

本帖最后由 terse 于 2022-11-24 20:19 编辑

32行这样试
输出没问题的话  你再自己调整一下
  1. ' ' + "${c}v.ffff"+  "`n"
复制代码

TOP

返回列表