regexp:匹配除单个单词外的所有内容

regexp:匹配除单个单词外的所有内容,regex,Regex,我不知道如何创建一个正则表达式来匹配所有内容,除了一个固定的单个单词。有人能帮我吗 背景:mailserver的别名映射,它将所有邮件重定向到一个用户/.*/->user1生成一个重定向循环,因此我需要从regexp中排除user1 编辑: 正则表达式应该匹配所有内容,除了单个单词user1。它还应该匹配包含该单词的输入,即user11 i、 e.:/.*/不带用户1 编辑2: POSIX基本正则表达式如果您不介意从第一组中获取值,可以使用以下方法: (?:\buser1\b)?(.+?)(?:

我不知道如何创建一个正则表达式来匹配所有内容,除了一个固定的单个单词。有人能帮我吗

背景:mailserver的别名映射,它将所有邮件重定向到一个用户
/.*/->user1
生成一个重定向循环,因此我需要从regexp中排除
user1

编辑:

正则表达式应该匹配所有内容,除了单个单词user1。它还应该匹配包含该单词的输入,即user11

i、 e.:/.*/不带用户1

编辑2:


POSIX基本正则表达式

如果您不介意从第一组中获取值,可以使用以下方法:

(?:\buser1\b)?(.+?)(?:\buser1\b|$)


这将匹配单词
user1
之前或之后的任何内容,或者匹配不存在的所有内容。

使用
grep
可以反转匹配:

$ echo "user2
user3
user1" | grep -v '^user1$'
user2
user3
$ echo "user10
user2
user1" | sed -E '/^user1$/d'
user10
user2
或者,使用
sed
可以删除匹配项:

$ echo "user2
user3
user1" | grep -v '^user1$'
user2
user3
$ echo "user10
user2
user1" | sed -E '/^user1$/d'
user10
user2
您可以使用
^(?!user1$)
。 出于检查目的,可以将python用作:

import re
if(re.match('^(?!user1$)','user11')):
  print('user11 matched')

if(re.match('^(?!user1$)','user1')):
  print('user1 matched')

if(re.match('^(?!user1$)','AnyThingElseBeforeuser1')):
  print('AnyThingElseBeforeuser1 matched')
输出如您所愿:

user11匹配


用户1之前匹配的任何内容

您能给我们一些输入文本示例,然后描述预期的输出是什么吗?另外,您使用的是什么正则表达式工具/语言?正如Tim Biegeleisen所说,您使用的是什么工具/编程语言?外面有很多不同的正则表达式。