Regex PCRE正则表达式-排除某些情况

Regex PCRE正则表达式-排除某些情况,regex,pcre,Regex,Pcre,Regex接受所有mesages,如下所示: $regex = /(^)(\[(.*)\]) (.*)$/; [Help] John: ... 问题是聊天室中的消息如下所示: $regex = /(^)(\[(.*)\]) (.*)$/; [Help] John: ... []技术信息:。。。 [>重要>> ] ... [BUFF>> 45] ... /^(?!\[[[]*(?:重要)?[[]*\])(\[(.*)\])(.*))$/ (?!)-为确保 \[\]-方括号内的内容不是

Regex接受所有mesages,如下所示:

$regex = /(^)(\[(.*)\]) (.*)$/;
[Help] John: ...
问题是聊天室中的消息如下所示:

$regex = /(^)(\[(.*)\]) (.*)$/;
[Help] John: ...
[]技术信息:。。。
[>重要<]。。。
[ >>>  ] ...
[BUFF<]。。。
[ >>> 45] ...
/^(?!\[[[]*(?:重要)?[[]*\])(\[(.*)\])(.*))$/
  • (?!)
    -为确保
  • \[\]
    -方括号内的内容不是
  • []*(?:重要)?[]*
    -只是空格的一个可变数字(
    *
    ),里面有一个可选(
    )单词
    重要
/^(?!\[[[]*(?:重要)?[]*\])(\[(.*)\])(.*))$/
  • (?!)
    -为确保
  • \[\]
    -方括号内的内容不是
  • []*(?:重要)?[]*
    -只是空格的一个可变数字(
    *
    ),里面有一个可选(
    )单词
    重要
    • 我建议

      /^(?!\[[ <>]*(?:Important)?[ <>]*\])(\[(.*)\]) (.*)$/
      
      ^(\[(?![]*(?:重要[]*)?])(.*)(.*)(.*)(.*))$
      

      (?![]*(?:Important[]*)?])
      如果内部只有空格,或者如果前面或后面有任何空格,
      以任何顺序排列,则否定前瞻将使正则表达式匹配失败

      请注意,前瞻放在打开的正后方
      [
      ,如果放在前面并包含
      [
      ,则可减少冗余回溯

      图案详情:

      • ^
        -字符串的开头
      • (\[
        -第1组开始,打开
        [
      • (?![]*(?:Important[]*)?)
        -如果符合以下条件,则会导致匹配失败的负面前瞻:
        • []*
          -0+字符:空格,
        • (?:重要[]*)?
          -1或0序列
          • 重要
            -文字
          • []*
            -0+字符:空格,
        • ]
          -关闭
          ]
      • (.*)
        -组2,匹配除换行符以外的0+个字符
      • ])
        -第1组结束时,
        ]
        匹配结束时的
        ]
      • (.*)
        -第3组,匹配除换行符以外的0+个字符
      • $
        -字符串结尾
        • 我建议

          /^(?!\[[ <>]*(?:Important)?[ <>]*\])(\[(.*)\]) (.*)$/
          
          ^(\[(?![]*(?:重要[]*)?])(.*)(.*)(.*)(.*))$
          

          (?![]*(?:Important[]*)?])
          如果内部只有空格,或者如果前面或后面有任何空格,
          以任何顺序排列,则否定前瞻将使正则表达式匹配失败

          请注意,前瞻放在打开的正后方
          [
          ,如果放在前面并包含
          [
          ,则可减少冗余回溯

          图案详情:

          • ^
            -字符串的开头
          • (\[
            -第1组开始,打开
            [
          • (?![]*(?:Important[]*)?)
            -如果符合以下条件,则会导致匹配失败的负面前瞻:
            • []*
              -0+字符:空格,
            • (?:重要[]*)?
              -1或0序列
              • 重要
                -文字
              • []*
                -0+字符:空格,
            • ]
              -关闭
              ]
          • (.*)
            -组2,匹配除换行符以外的0+个字符
          • ])
            -第1组结束时,
            ]
            匹配结束时的
            ]
          • (.*)
            -第3组,匹配除换行符以外的0+个字符
          • $
            -字符串结尾

          Um,在“重要”的情况下:空格和“>”,@user64675,ok fixed(假设你的意思是按数字而不是排列)。按数字和排列而变化(@user64675,ok,fixed。由相同的
          []*
          子模式(
          []*(?:重要)?[]*
          )包围的可选组会损失一点性能,而不是线性的
          []*(?:Important[]*)?
          Um,在“Important”的情况下:空格和“>”,@user64675,ok fixed(假设您的意思是按数字变化而不是按排列)。按数字和排列变化((@user64675,ok,fixed。由相同的
          []*
          子模式(
          []*(?:Important)[]*
          )包围的可选组)由于更线性的
          []*(?:重要[]*)?