【问题标题】:Control characters in string sequence字符串序列中的控制字符
【发布时间】:2019-01-03 00:57:05
【问题描述】:

正在搜索的字符串

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

如果存在,模式应该找到“(something-big) issues”的确切子字符串。

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

我尝试过的这种模式失败了

\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";
}   

【问题讨论】:

  • 这行得通 --- $str2 -match '\(something-big\) issues'。我不知道为什么你的失败,寿。 [脸红]

标签: regex powershell


【解决方案1】:

您的正则表达式模式正确地为您的输入返回 $false,因为:

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

( 不是单词字符,它前面的空格 也不是,所以 ( is not actually a word-boundary 的索引 - 删除第一个 \b 并且它会起作用:

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

如果您只想在(something-big) 前面出现非单词字符时进行匹配,请使用否定单词字符\W(注意W 为大写):

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

或使用否定的后视:

$str2 -match '(?<!\w)\(something-big\) issues\b'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多