组合两个正则表达式以保留转义字符但排除非转义字符

Combing two regex expressions to keep escaped characters but exclude non-escaped characters

比如我有一个字符串"aout\>>>out\nt\<foo<<bar" 我找不到可以找到单词的正则表达式:

我正在尝试排除任何“<”或“>”或“|”未使用“\”转义的字符。

现在,我有 [^ \t\n]+ 给我所有不带 <>| 的“单词”,但我想排除字符串中具有表达式 (?:(?<!\)[<>|])+ 的部分(任何非否定 <>|)。有没有办法将这两个表达式结合起来?

您可以使用

(?:\[<>|]|[^\s<>|])+

regex demo详情:

  • (?: - non-capturing 组的开始:
    • \[<>|] - 一个 \ 字符,然后是一个 <>| 字符
    • | - 或
    • [^\s<>|] - 除空格以外的任何字符,<>|
  • )+ - non-capturing 组结束,一次或多次重复。