使用正则表达式捕获Linux用户字符串

时间:2020-06-03 14:26:34

标签: regex

假设我有以下文本字符串:

user01-s
user01--s
user01

目标是从日志事件中捕获用户名。所以我想抓住:

第一行:user01

第二行:user01-

第三行:user01

每行包含一个Linux用户(可能包含一个-)。在某些情况下,该行以-s结尾,并且不应该包含在用户名中。

因此,我的解决方案是:

(?:(\S+)-s)|(\S+)

但是我想知道我们是否可以更好地捕获用户名。

1 个答案:

答案 0 :(得分:1)

如果用户名位于整行,则可以使用一个捕获组,该捕获组的可选部分与-s部分匹配:

^([^\s-]+-?)(?:-s)?$

Regex demo

如果用户名中存在连字符,则可以使用\S并将其设置为非贪婪\S+?

^(\S+?)(?:-s)?$

Regex demo

相关问题