以字符串顺序控制字符

时间:2019-01-02 16:23:46

标签: regex powershell

正在搜索的字符串

  

”遇到了(大)问题,做了其他事情,请参阅日志   文件:“

模式应该找到“(大问题)”确切的子字符串(如果存在)。

我如何在正则表达式模式中允许括号

我尝试过的这种模式失败

\b\(something-big\) issues\b

例如

$str2 = "ran into (something-big) issues do something else bla bla, see log file: ";


if($str2 -match '\b\(something-big\) issues\b' ) {
    Write-Output "we found it";    
}
else{
    Write-Output "nope";
}   

1 个答案:

答案 0 :(得分:3)

由于以下原因,您的正则表达式模式正确返回了$false作为输入信息

'\b\(something-big\) issues\b'
# ^ this guy

(不是文字字符,也不是其前面的空格,因此索引( is not actually a word-boundary-删除第一个{{1} },它将起作用:

\b

如果仅当$str2 -match '\(something-big\) issues\b' 前面有非单词字符时才想匹配,请使用否定的单词字符(something-big)(注意\W为大写):< / p>

W

或在后面使用否定字眼:

$str2 -match '\W\(something-big\) issues\b'