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

[问题求助] 求PowerShell更简单的正则解决方法

功能已经实现的差不多了, 就是最后$s2Array的结果少了德国
另外,感觉用正则应该还有更简单的方法, 求路过大佬指导

功能描述如下:
#如果$s变量的文本的第1行是否以●●开头且行内包含★ 则:获取●●和第1个★之间的文本存到变量$s1
#再获取第1个★之后的文本存到$s2,并以★为分割符将文本分割成数组$s2Array, 注意每组文本前后的空格要删除
#尽量使用[regex]::Matches()方法结合合理的正则表达式来实现
  1. $s = @'
  2. ●● 中国 ★ 美国 ★ 日本 ★ 德国
  3. 你好
  4. 世界
  5. hello
  6. world
  7. '@
  8. # 按照规则提取$s1和$s2
  9. if ($s -match "(?m)^●●.*★")
  10. {
  11. $s1 = [regex]::Matches($matches[0], '(?<=●●).*?(?=★)')[0].Value.Trim()
  12. $s2 = [regex]::Matches($matches[0], '(?<=★).*')[0].Value.Trim()
  13. # 以★为分割符将文本分割成数组,并删除前后的空格
  14. $s2Array = $s2 -split "★" | ForEach-Object { $_.Trim() }
  15. # 输出结果
  16. $s1
  17. '--------'
  18. $s2Array
  19. }
复制代码

返回列表