[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
用-f格式化就很好操作
  1. $s = @'
  2. 岁月难得沉默
  3. 秋风厌倦漂泊
  4. 夕阳赖着不走
  5. 挂在墙头舍不得我
  6. 昔日伊人耳边话
  7. 已和潮声向东流
  8. 再回首
  9. #开始
  10.       黄种人"在东京", //日本
  11.              白人"在纽约", //美国
  12. "在刚果",//南非
  13.         黑人//印度
  14. #结束
  15. 往事也随枫叶一片片落
  16. 爱已走到尽头
  17. "在刚f果",//南非
  18. 恨也放弃承诺
  19. 命运自认幽默
  20. 想法太多由不得我
  21. 壮志凌云几分酬
  22. 知己难逢几人留
  23. '@
  24. $hash = [ordered]@{}
  25. if($s -match '(?s)#开始(.*?)#结束'){
  26.     [regex]::Matches($Matches[1],'(?m)"(.+?)",\s*//(.+?)$') | foreach { $hash.($_.Groups[2].Value) = $_.Groups[1].Value }
  27. }
  28. $hash.Keys | foreach { '{0} = "{1}"' -f $_,$hash[$_] }
复制代码
1

评分人数

    • 5i365: 乐于分享, 技术牛X技术 + 1

TOP

&{
    代码块
}
可以把整个代码块的输出转换为一个字符串
  1. $hash = [ordered]@{}
  2. if($s -match '(?s)#开始(.*?)#结束'){
  3.     [regex]::Matches($Matches[1],'(?m)"(.+?)",\s*//(.+?)$') | foreach { $hash.($_.Groups[2].Value) = $_.Groups[1].Value }
  4. }
  5. $h =
  6. &{
  7.     '$hash = [ordered]@{'
  8.     $hash.Keys | foreach { '{0}{1} = "{2}"' -f "`t",$_,$hash[$_] }
  9.     '}'
  10. }
  11. $h
复制代码
1

评分人数

TOP

本帖最后由 went 于 2022-3-31 22:05 编辑

纠正一下
&{
    代码块
} 转换为Object数组

&{
    代码块
} | Out-String 转换为字符串

TOP

这里面有关于单行和多行匹配的详细介绍
https://docs.microsoft.com/zh-cn ... -expression-options

TOP

回复 10# 5i365


    我运行没问题

TOP

本帖最后由 went 于 2022-4-1 21:16 编辑

正则改一下,把末尾的换行符去掉
  1. '(?m)"(.+?)",\s*//(\S+?)\s$'
复制代码
  1. '(?m)"(.+?)",\s*//\s*(.+?)\s*$'
复制代码

TOP

返回列表