组合两个正则表达式以保留转义字符但排除非转义字符
Combing two regex expressions to keep escaped characters but exclude non-escaped characters
比如我有一个字符串"aout\>>>out\nt\<foo<<bar"
我找不到可以找到单词的正则表达式:
"aout\>"
"out\nt\<foo"
"bar"
我正在尝试排除任何“<”或“>”或“|”未使用“\”转义的字符。
现在,我有 [^ \t\n]+
给我所有不带 <>| 的“单词”,但我想排除字符串中具有表达式 (?:(?<!\)[<>|])+
的部分(任何非否定 <>|)。有没有办法将这两个表达式结合起来?
您可以使用
(?:\[<>|]|[^\s<>|])+
见regex demo。 详情:
(?:
- non-capturing 组的开始:
\[<>|]
- 一个 \
字符,然后是一个 <
、>
或 |
字符
|
- 或
[^\s<>|]
- 除空格以外的任何字符,<
、>
和 |
)+
- non-capturing 组结束,一次或多次重复。
比如我有一个字符串"aout\>>>out\nt\<foo<<bar"
我找不到可以找到单词的正则表达式:
"aout\>"
"out\nt\<foo"
"bar"
我正在尝试排除任何“<”或“>”或“|”未使用“\”转义的字符。
现在,我有 [^ \t\n]+
给我所有不带 <>| 的“单词”,但我想排除字符串中具有表达式 (?:(?<!\)[<>|])+
的部分(任何非否定 <>|)。有没有办法将这两个表达式结合起来?
您可以使用
(?:\[<>|]|[^\s<>|])+
见regex demo。 详情:
(?:
- non-capturing 组的开始:\[<>|]
- 一个\
字符,然后是一个<
、>
或|
字符|
- 或[^\s<>|]
- 除空格以外的任何字符,<
、>
和|
)+
- non-capturing 组结束,一次或多次重复。