java根据所选取的字符串的字串,生成正则表达式匹配

KerryLi 发布于 03/15 18:16
阅读 269
收藏 0

如 String log =“<86>Feb 19 2022 14:03:19 idss-03 sshd[767719]: Accepted password for root from 10.11.39.16 port 40658 ssh2”;

选取 Feb 19 2022 14:03:19 , 同时自定义一个group name,然后能生成一个正则表达式可以提取这个 Feb 19 2022 14:03:19 内容

 

入参:选中字符串并指定字段  选中的子字符串坐标,并传一个自定义的 group 的 name
{
    "logInfo": "<86>Feb 19 2022 14:03:19 idss-03 sshd[767719]: Accepted password for root from 10.11.39.16 port 40658 ssh2",
    "subLogs": [
        {
            "begin": 4,
            "end": 24,
            "name": "time"
        }
    ]
}

需要返回:

{
    "status": "success",
    "content": {
        "reg": "(?<time>[\w]+\s+[\d]+\s+[\d]+\s+[\d]+:[\d]+:[\d]+)"
    },
    "message": "生成正则表达式成功",
    "errorCode": ""
}

 

比如 入参:增加选中字符串并制定字段 指定多段子字符串
{
    "logInfo": "<86>Feb 19 2022 14:03:19 idss-03 sshd[767719]: Accepted password for root from 10.11.39.16 port 40658 ssh2",
    "subLogs": [
        {
            "begin": 4,
            "end": 24,
            "name": "time"
        },
        {
            "begin": 96,
            "end": 101,
            "name": "port"
        }
    ]
}

返回:

{
    "status": "success",
    "content": {
        "reg": "提取多个子字符串的正则表达式"
    },
    "message": "生成正则表达式成功",
    "errorCode": ""
}

 

最后能通过正则匹配解析成功

入参:
{
    "sampleLog": "<86>Feb 19 2022 14:03:19 idss-03 sshd[767719]: Accepted password for root from 10.11.39.16 port 40658 ssh2",
    "regValue": "\\<[\\d]+\\>[\\w]+\\s+[\\d]+\\s+[\\d]+\\s+[\\d]+:[\\d]+:[\\d]+\\s+[\\w]+-[\\d]+\\s+[\\w]+\\[[\\d]+\\]:\\s+[\\w]+\\s+[\\w]+\\s+[\\w]+\\s+[\\w]+\\s+[\\w]+\\s+[\\d]+\\.[\\d]+\\.[\\d]+\\.[\\d]+\\s+[\\w]+\\s+(?<port>[\\d]+)"
}

需要返回结果

{
    "status": "success",
    "content": [
        {
            "value": "40658",
            "key": "port"
        }
    ],
    "message": "解析日志成功",
    "errorCode": ""
}

加载中
0
二次元萌控森
二次元萌控森

先这样,再这样,最后再那样。我说的这么清楚,懂了吗?

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部