正则表达式匹配任何字符串powershell

Col*_*350 15 regex powershell parsing match

无论我多么认为我知道正则表达式,他们似乎总是打败我.

我正在寻找一个匹配任何字符串的通用模式.我可以弄清楚如何处理所有这些不同的命名约定的唯一方法是制作一堆不同的正则表达式模式,现在我甚至不确定是否所有数据都被拾取,所以我必须手动交叉检查它.

我只想尝试可能在两个括号[]内的任何东西:

elseif($line -match "\[\w*\d*\]") {         
    $pars = $matches[0]
}
elseif($line -match "\[\d*\w*\]") {
    $pars = $matches[0]
}
elseif($line -match "\[\w*\d*_\w*\]") {
    $pars = $matches[0]
}
elseif($line -match "\[\w*\d*_*\w*-*\w*:*\w*\]") {
    $pars = $matches[0]
}            
elseif($line -match "\[\w*_*\w*_*\w*_*\w*_*\w*_*\w*-*\w*\]") {
    $pars = $matches[0]
}
Run Code Online (Sandbox Code Playgroud)

我这样做的方式不会产生错误,但我不确定它是否处理了我可能遇到的所有情况.这么多数据几乎不可能手动检查.

此外,如果有人知道生成正则表达式模式的一个很好的实用程序,将非常感激.我只能找到对我来说不是很有用的正则表达式测试程序,而且对于使用PowerShell的正则表达式,在线帮助很少.

JPB*_*anc 21

$a = [regex]"\[(.*)\]"
$b = $a.Match("sdfqsfsf[fghfdghdfhg]dgsdfg") 
$b.Captures[0].value
Run Code Online (Sandbox Code Playgroud)


Aar*_*sen 7

匹配不是括号的所有内容.创建一个包含除括号字符之外的任何字符的字符类:

$line -match "\[[^\[\]]+\]"
Run Code Online (Sandbox Code Playgroud)