regexp:匹配所有单词,

时间:2018-09-01 15:25:29

标签: regex

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

背景:邮件服务器的别名映射,它将所有邮件重定向到一个用户。 /.*/ -> user1产生了一个重定向循环,因此我需要从正则表达式中排除user1

编辑:

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

即:/.*/,没有 user1

Edit2:

POSIX基本正则表达式

3 个答案:

答案 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已匹配