代码之家  ›  专栏  ›  技术社区  ›  bitshift

字符串序列中的控制字符

  •  0
  • bitshift  · 技术社区  · 7 年前


    “遇到(大的)问题,做点别的什么,等等,看日志 文件:“

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

    我试过的这个模式失败了

    \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 回复  |  直到 7 年前
        1
  •  3
  •   Mathias R. Jessen    7 年前

    您的正则表达式模式正确返回 $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'