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