求助:使用Regex提取并隔离username标签相关内容
正则表达式解决方案
需求对应方案
方案1:直接提取指定前缀部分
如果核心需求是从测试字符串中隔离出[Listener 00_TEST_ACCOUNT_LOCK, address 00_TEST-ACCOUNT-LOCK_USER:这部分内容,可使用以下正则:
^\[Listener [^,]+, address [^:]+:
正则解释
^:锚定字符串开头,避免匹配其他位置的相似内容\[Listener:匹配固定开头文本([是正则特殊字符,需转义)[^,]+:匹配任意非逗号字符,直到遇到逗号(精准捕获00_TEST_ACCOUNT_LOCK部分), address:匹配固定中间连接文本[^:]+::匹配任意非冒号字符,直到遇到冒号(精准捕获00_TEST-ACCOUNT-LOCK_USER:部分)
方案2:给username添加前后标识
如果需要给目标username添加--username--这类标识,同时保留前后文本,可使用替换正则:
匹配正则
(\[Listener [^,]+, address [^:]+:)username(]:.+)
替换模板
$1--username--$2
逻辑说明
- 分组
(\[Listener [^,]+, address [^:]+:):捕获你需要的前缀部分 username:精准匹配目标文本- 分组
(]:.+):捕获冒号后的剩余日志内容 - 替换时通过
$1和$2引用捕获的分组,插入自定义标识
适配你的LogQL代码
将方案1的正则整合到你现有LogQL语句中(注意LogQL需双重转义特殊字符):
{filename="/folder/folder/folder/folder/folder/folder/File.lgw"} |= `]:The referenced account is currently locked out and may not be logged on to.` | regexp "(?P<username>^\\[Listener [^,]+, address [^:]+:)" | line_format "{{.username}}"
内容的提问来源于stack exchange,提问作者C0d3r-Initiate
相关产品推荐
相关产品推荐

