除了固定的单个单词外,我不知道如何创建匹配所有内容的正则表达式。有人可以帮我吗?
背景:邮件服务器的别名映射,它将所有邮件重定向到一个用户。 /.*/ -> user1
产生了一个重定向循环,因此我需要从正则表达式中排除user1
。
编辑:
除单个单词 user1 外,正则表达式应与所有匹配。它还应匹配包含该单词的输入,即 user11 。
即:/.*/,没有 user1
Edit2:
POSIX基本正则表达式
答案 0 :(得分:0)
如果您可以从第一组中获得价值,可以使用以下方法:
(?:\buser1\b)?(.+?)(?:\buser1\b|$)
Demo。
这将匹配单词user1
之前或之后的所有内容,如果不存在则匹配所有内容。
答案 1 :(得分:0)
使用grep
,您可以反转匹配:
$ echo "user2
user3
user1" | grep -v '^user1$'
user2
user3
或者,您可以使用sed
删除匹配项:
$ echo "user10
user2
user1" | sed -E '/^user1$/d'
user10
user2
答案 2 :(得分:0)
您可以使用^(?!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匹配
AnyThingElseBeforeuser1已匹配