regex - Powershell忽略正则表达式后面的查看以返回整行

标签 regex powershell

我希望是一个足够简单的问题。

我有一个包含以下行的文本日志文件:

123,010502500114082000000009260000000122001T



我想搜索日志文件并返回上述文本的“00000000926”部分。于是我写了一个正则表达式:
(?<=123.{17})。{11}

因此,当后面的文本等于 '123' 和 17 个字符时,返回下一个 11。在在线正则表达式编辑器上测试时,这可以正常工作。但是在 Powershell 中,返回的是整行而不是我想要的 11 个字符,我不明白为什么。
$InputFile = get-content logfile.log
$regex = '(?<=123.{17}).{11}'
$Inputfile | select-string $regex

(返回整行)。

为什么powershell返回整行?

最佳答案

不打折Select-String刚刚。赞 Briantist说它正在做你想做的事,但你需要以两种方式之一提取你真正想要的数据。 Select-String返回 Microsoft.PowerShell.Commands.MatchInfo对象而不仅仅是原始字符串。我们还将使用 Select-String能够直接获取文件输入。

$InputFile = "logfile.log"
$regex = '(?<=123.{17}).{11}'
Select-string $InputFile -Pattern $regex | Select-Object -ExpandProperty  Matches | Select-Object -ExpandProperty Value 

如果你至少有 PowerShell 3.0
(Select-string $InputFile -Pattern $regex).Matches.Value

这在两种情况下都给出
00000009260

关于regex - Powershell忽略正则表达式后面的查看以返回整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851877/

相关文章:

java - java中的单词正则表达式

javascript - 如果 URL 后面有查询字符串,则使用 javascript 更改文件扩展名

wpf - 在PowerShell中将WPF XAML链接到DataGrid

powershell - 如何在Powershell中删除表单 "items"

powershell - Powershell SCCM客户端应用程序安装

javascript - 奇怪的返回没有标志的 javascript 正则表达式 'g'

除特定单词外的正则表达式

regex - 如何使用grep匹配双引号

powershell - 通过 PowerShell 部署 Azure ARM 模板时的日志记录/进度指示器

java - ProcessBuilder 从 powershell 中的命令中删除“