我的系统日志如下:
Apr 22 11:52:44 localhost systemd: Stopped logstash.
Apr 22 11:52:07 localhost systemd: Started Getty on tty1.
Apr 22 11:52:07 localhost systemd: Started Hostname Service.
Apr 22 11:52:07 localhost systemd: Started Import network configuration from initramfs.
我想在状态(程序名称简称)后得到3个字。
我的解决方案:
"\bsystemd:\s+\S+\s\K\S+\s\S+\s\S+"
但是,程序名可以少于3个字(例如日志中的logstash),这就是为什么我需要一个正则表达式来匹配1或2或3个字(取决于字符串的长度)的原因。
如何解决此问题?
答案 0 :(得分:0)
您可以使用
\bsystemd:\s+\S+\s\K\S+(?:\s\S+){0,2}
请参见regex demo。
\S+(?:\s\S+){0,2}
部分完成了工作:它匹配1+个非空白字符,后跟0到2个1+个空白重复,再加上1+个非空白字符。
查看正则表达式图: