【问题标题】:Ctrl-F like regex in powershell?Ctrl-F 像 powershell 中的正则表达式?
【发布时间】:2020-07-01 16:29:32
【问题描述】:

在Atom中,如果我将Ctrl-F与正则表达式一起使用,它将突出显示正则表达式的所有匹配项,例如

文件:

aaa
b
ccc
d
e
f
gg

查询:

[a-z]{2,}

高亮文本:

aaa

ccc



gg

但我还没有找到在 PowerShell 中执行此操作的 cmdlet

预期输入/输出:

$var = @"
aaa
b
ccc
d
e
f
gg
"@

$var -find "[a-z]{2,}"

#Output
aaa
ccc
gg

有什么办法可以做到吗?

【问题讨论】:

  • 你有没有尝试过?
  • @NekoMusume No.
  • 记得用 google...stackoverflow.com/questions/4726074/… 回答你的问题吗?
  • 我试过$regex = [regex]'[a-z]{2,}'$regex.match($var) 得到了不正确的结果
  • .match 只得到第一个结果,.matches 得到多个。这就是你想要的吗?

标签: regex powershell


【解决方案1】:

你要找的是

$regex = [regex]'[a-z]{2,}'
$regex.Matches($var).value

说明:

在 cmets 中,我建议您查看 Powershell using Regex finding a string within a string,其中的答案展示了 [regex] 的数据类型 .match 方法。不幸的是,这仅获取正则表达式的第一个结果,并不意味着多个结果,但是,matches 得到多个,因为它是匹配的复数形式:

.match:

# Define a regex query
$regex = [regex]'[a-z]{2,}'

# Define your variable
$var = @"
aaa
b
ccc
d
e
f
gg
"@

# Query $var
$regex.match($var)
#output


Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 0
Length   : 3
Value    : aaa


如您所见,这只获取aaa 并提供其他数据,例如它所在的组、是否成功以及其他信息。

但是,如果我们用matches 方法做同样的事情,它将得到所有3 个结果:

$regex.matches($var)
#output


Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 0
Length   : 3
Value    : aaa

Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 6
Length   : 3
Value    : ccc

Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 16
Length   : 2
Value    : gg



显示所有三个结果的信息。但是如果我们想将结果缩小到值,我们可以抓住变量的值标签,比如

$regex.Matches($var).value
#output
aaa
ccc
gg

这是(我从你的问题中假设)你想要的。

【讨论】:

  • 如果我想要价值和长度,我该怎么做?
  • 喜欢@(@{Length = $regex.Matches($var).length}; @{Value = $regex.Matches($var).value})?
【解决方案2】:

您可以使用Select-String 来获得您想要的输出:

$var = @"
aaa
b
ccc
d
e
f
gg
"@
$var -split '\r\n' | Select-String -Pattern "[a-z]{2,}"

输出:

aaa
ccc
gg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2011-08-18
    • 2014-03-21
    • 2012-10-23
    相关资源
    最近更新 更多