Powershell Select-String:通过命名正则表达式组获取结果

时间:2019-02-22 10:37:43

标签: powershell

我使用包含命名组的正则表达式使用这个Select-String

export default Cmp => {
  return class extends Component {
    this.state = {
      error: false
    }

    onError() = () => this.setState({ error: true });

    render() {
      if (error) {
        return <ErrorScreen />
      }

      return <Cmp onError={this.onError} { ...this.props } />
    }
  }
}

选择字符串完成其工作:

$m=Select-String -pattern '(?<mylabel>error \d*)' -InputObject 'Some text Error 5 some text'

我可以通过使用组的索引来获取匹配的命名组的值,没问题:

PS > $m.Matches.groups


Groups   : {0, mylabel}
Success  : True
Name     : 0
Captures : {0}
Index    : 10
Length   : 7
Value    : Error 5

Success  : True
Name     : mylabel
Captures : {mylabel}
Index    : 10
Length   : 7
Value    : Error 5

但是使用命名的正则表达式组(mylabel)无法获得相同的结果。我发现类似PS > $m.Matches.groups[1].Value Error 5 的语句,但在我的计算机上不起作用(W10 / W2012,PS 5.1)

1 个答案:

答案 0 :(得分:0)

您在上面的评论中得到了一个正确答案,但这是不使用0匹配索引的方法:

$m.Matches.groups | ? { $_.Name -eq 'mylabel' } | Select-Object -ExpandProperty Value