标题: [问题求助] powershell 中用-match取所有匹配值 [打印本页]
作者: 小白龙 时间: 2022-7-18 16:28 标题: powershell 中用-match取所有匹配值
下面的代码可以执行, 但是取到的值只有一个, 求高手指点, 多谢
我想取 开头是2到4个字母, 后跟一个空格, 再跟一个: 然后跟任意字符的行
想取到
abc :ABC
abcd :BBB
aeee :中国- $s = @'
- def :BBB
- abc :ABC
- abcd :BBB
- aeee :中国
- '@
- $s -match '(?m)(^[a-z]{2,4} :.+)'
- $matches
复制代码
作者: flashercs 时间: 2022-7-18 16:51
再了解一下 -match 操作符的用法:
左侧是多个对象时- $s -split '\n' -match '^[a-z]{2,4} :.+'
复制代码
- $arr= @(
- ' def :BBB'
- 'abc :ABC'
- 'abcd :BBB'
- 'aeee :中国'
- )
- $arr -match '^[a-z]{2,4} :.+'
复制代码
作者: 小白龙 时间: 2022-7-18 17:15
回复 2# flashercs
多谢大侠指导:
现在还是有点不明白:
为什么我的 -match结果返回的是真假, 你的却直接返回了满足条件的值
作者: flashercs 时间: 2022-7-18 17:36
本帖最后由 flashercs 于 2022-7-18 17:40 编辑
回复 3# 小白龙
https://docs.microsoft.com/en-us ... -notmatch-operators
powershell的很多操作符都支持左侧操作数是一个对象或多个对象;但返回结果不一样的.
作者: 小白龙 时间: 2022-7-18 18:09
回复 4# flashercs
再次感谢指点,
总感觉我最上面的代码, 改改哪里就能行的通
记得以前看到类似的教程, 说是()中的是组, 有几个匹配的, 就会返回几个组, 可我的就是不能返回
作者: flashercs 时间: 2022-7-18 18:22
本帖最后由 flashercs 于 2022-7-18 18:31 编辑
回复 5# 小白龙
你那是一个字符串,先-split '\n' 分成多行就行了.- $s = @'
- def :BBB
- abc :ABC
- abcd :BBB
- aeee :中国
- '@
复制代码
这是一个字符串,先-split '\n' 再 -match
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |