我如何对字符串进行正则化并提取\和]之间的最后一个子字符串,而不是拆分字符串?示例:
\
]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\anyLongString]
uyhoqukh1#
一种方法是:
$a = "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\anyLongString]" $a -match '([^\\]*)]$' $matches[1] anyLongString
dphi5xsq2#
另一种方法是使用更少的代码行:
$a = "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\anyLongString]" $a -Replace '^.*\\([^\\]+)]$', '$1'
zpgglvta3#
我的解决方案是:
$a = ('[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\anyLongString]' ` | Select-String -Pattern '([^\\]+)(?=])').Matches.Value
它使用Select-String查找第一个匹配项,然后使用.Matches.Value属性获取子字符串。我更喜欢这样,因为它是一行代码,即使没有找到匹配也能工作(不像this solution),而且它明确而优雅,不像this solution更简洁但看起来很深奥。
Select-String
.Matches.Value
3条答案
按热度按时间uyhoqukh1#
一种方法是:
dphi5xsq2#
另一种方法是使用更少的代码行:
zpgglvta3#
我的解决方案是:
它使用
Select-String
查找第一个匹配项,然后使用.Matches.Value
属性获取子字符串。我更喜欢这样,因为它是一行代码,即使没有找到匹配也能工作(不像this solution),而且它明确而优雅,不像this solution更简洁但看起来很深奥。