首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell匹配文本文件中所有出现的模式

使用Powershell匹配文本文件中所有出现的模式
EN

Stack Overflow用户
提问于 2020-04-10 16:20:58
回答 1查看 399关注 0票数 1

我有一个文本文件,我正在使用Powershell列出下面模式中的名称

档案内容:

代码语言:javascript
复制
beta-clickstream-class="owner:"mike""
beta-clickstream-class="owner:"kelly""
beta-clickstream-class="owner:"sam""
beta-clickstream-class="owner:"joe""
beta-clickstream-class="owner:"john""
beta-clickstream-class="owner:"tam""

我想要的输出

代码语言:javascript
复制
mike
kelly
sam
joe
john
tam

我正在使用的脚本

代码语言:javascript
复制
$importPath = "test.txt"
$pattern = 'beta-clickstream-class="owner:"(.*?)""'
$string = Get-Content $importPath
$result = [regex]::match($string, $pattern).Groups[1].Value
$result

上面的脚本只列出文件上的第一个名称。你能指导我如何列出文件上的所有名字吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 16:30:27

Get-Content返回一个字符串数组,因此您必须对数组$string的每个元素调用[regex]::match()

但是,正如-replace operator所建议的那样,AdminOfThings提供了一个更简单的解决方案:

代码语言:javascript
复制
(Get-Content $importPath) -replace '.+owner:"([^&]+).+', '$1'

或者,您可以使用Get-Content -Raw将文件读入一个单一的多行字符串中,然后是[regex]::Matches() (多个匹配),而不是[regex]::Match() (单个匹配)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61144374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档