regex - 字符串中间带有通配符的正则表达式
问题描述
我有来自不同用户的 [HKEY_CURRENT_USER\Printers\Connections] 的大量注册表导出。此文件包含多行带有“
[HKEY_CURRENT_USER\Printers\Connections\,,BBPRINTER01.domain.local,AG-printer-S4]
我需要的BBPRINTER01.domain.local,AG-printer-S4
部分。问题是,BBPRINTER01
andAG-printer-S4
可以不同。
所以我需要一个正则表达式,它从 .domain.local 中提取“ .domain.local ” [HKEY_CURRENT_USER\Printers\Connections\,,BBPRINTER01.domain.local,AG-printer-S4]
。
而且我没有任何线索来生成这个:(
(?<=\[)(.*)(?=\])
我可以得到所有东西,包括但[]
我不知道如何只从上面获取通配符字符串。
解决方案
您可以使用以下方法将子字符串捕获到第 1 组中
\[[^][]*?(\w+\.domain\.local,[^][]*)]
请参阅此正则表达式演示。它匹配
\[
- 一个[
字符[^][]*?
- 0+ 个字符[
,]
尽可能少(
- 捕获组 1 的开始\w+
- 一个或多个字母/数字/_
\.domain\.local,
- 一个.domain.local,
字符串[^\]\[]*
- 0 个或多个字符,而不是]
and[
)
捕获组结束]
- 一个]
字符。
在 PowerShell 中,使用
$result = Get-Content $file | Select-String -Pattern '\w+\.domain\.local,[^][]*'
if ($result.Matches.Success) { $result.Matches.Groups[1].Value }
# => BBPRINTER01.domain.local,AG-printer-S4
PowerShell 测试:
推荐阅读
- java - MongoDB 使用唯一索引覆盖或跳过现有文档
- google-calendar-api - Google OAuth 2.0 不适用于 Google Workspace (G Suite) 帐户
- delphi - 如何从运行时创建的 Web 浏览器的客户端区域创建位图?
- opencv - findContours 返回的层次结构是否已排序?
- r - 基于每行首字母的子集行
- ruby - 如果在 Active Admin 上传递了无效的 URL,如何重定向到 Not Found 页面?
- spring - 如何使用 requestHeader 向端点发出 post/get 请求?
- javascript - math.random() 的问题,生成 10 个数字,从 0 到 100
- doctrine - Doctrine - 查询生成器仅返回 1 个结果
- android - Android WebView loadUrl 是否支持 ipv6 地址