这是一个非常复杂的正则表达式(也许对我而言)所以我希望我的解释会很清楚。
规格:
在方括号后计算第一个冒号
[1234]:
< - 这是第一个冒号
在第3个冒号之后和第4个冒号之前匹配一个字符串
[1234]: abc : 0 : xyz :
< - 它将匹配xyz
,因为它位于第3个冒号之后和第4个冒号之前
如果在第一个之后没有另一个冒号,它将在方括号后的第一个冒号后匹配整个字符串
[1234]: abc def ghi
< - 它将匹配第一个冒号后的整个字符串abc def ghi
,因为它没有另一个冒号。
以下几个例子:
xxxx [2114]:debug:0:ABC :: CheckIdleTimeout():slot = 2 0x00000000 RC_OK
应仅匹配 ABC
xxxx [13312]:info:0:用户登录:admin:xx.xxx.xx.xx / 123
应仅匹配用户登录
xxxx [12898]:pam_unix(sshd:session):为用户admin打开的会话
应仅为用户管理
打开会话xxxx [12898]:来自xx.xxx.xx.xx端口123的管理员接受的密码
在冒号来自xx.xxx.xx.xx端口123的管理员的接受密码后,应匹配整个字符串
==
我目前可能没有帮助,但也许它可以成为你的起点。
\[(.*?)\]:\s(\w.*)
它只匹配[xxxx]:
我正在使用ruby正则表达式。
答案 0 :(得分:0)
试试这个正则表达式:
^(?:[^:]+:){3}([^:]+?(?:$|:))|^(?:[^:]+:)([^:]+$)
它返回第一个和第二个捕获组中所需的子串。如何访问这些组取决于您使用的语言。
答案 1 :(得分:0)