我使用包含命名组的正则表达式使用这个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)
答案 0 :(得分:0)
您在上面的评论中得到了一个正确答案,但这是不使用0匹配索引的方法:
$m.Matches.groups | ? { $_.Name -eq 'mylabel' } | Select-Object -ExpandProperty Value