功能已经实现的差不多了, 就是最后$s2Array的结果少了德国
另外,感觉用正则应该还有更简单的方法, 求路过大佬指导
功能描述如下:
#如果$s变量的文本的第1行是否以●●开头且行内包含★ 则:获取●●和第1个★之间的文本存到变量$s1
#再获取第1个★之后的文本存到$s2,并以★为分割符将文本分割成数组$s2Array, 注意每组文本前后的空格要删除
#尽量使用[regex]::Matches()方法结合合理的正则表达式来实现- $s = @'
- ●● 中国 ★ 美国 ★ 日本 ★ 德国
- 你好
- 世界
- hello
- world
- '@
-
- # 按照规则提取$s1和$s2
- if ($s -match "(?m)^●●.*★")
- {
- $s1 = [regex]::Matches($matches[0], '(?<=●●).*?(?=★)')[0].Value.Trim()
- $s2 = [regex]::Matches($matches[0], '(?<=★).*')[0].Value.Trim()
-
- # 以★为分割符将文本分割成数组,并删除前后的空格
- $s2Array = $s2 -split "★" | ForEach-Object { $_.Trim() }
-
- # 输出结果
- $s1
- '--------'
- $s2Array
- }
复制代码
|