**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
5小时前关门了。
截至3小时前,机构群体正在审核是否重新开放此问题。
Improve this question
我创建了一个模式来匹配JWT(ES256)。
(([a-zA-Z]+([0-9]+[a-zA-Z]+)+)9).*?([a-zA-Z]+([0-9]+[a-zA-Z]+)+).(.*?)(?=[\s\"\\,\)\]])
它可以在日志中找到jwt标记以进行进一步的屏蔽,但是它也有很多误报,匹配了不应该匹配的内容。
示例字符串:
(traceId内容被屏蔽,我将其更改为jwt以重现问题)
[traceId=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0ZXN0Iiwic3ViIjoiam9obiIsImF1ZCI6ImNvbm5vciIsImlhdCI6NjY2NjY2NjY5OSwiZXhwIjo2NjcwNTc0NTk5fQ.fh3NKfJMO3QNYrC6Lq6TG5qdJ8kgQmubfJh5bqTengiVB8q2MdfjNwVajZNMpaPKOCSoReVuRcVyJoFQwT16-w] DEBUG something
我想添加带有负lookbehind的排除项,以便仅在不包含某些单词(如***traceId***或其他参数)时进行匹配,但它不适用于此模式。
(?<=(?<!traceId))(([a-zA-Z]+([0-9]+[a-zA-Z]+)+)9).*?([a-zA-Z]+([0-9]+[a-zA-Z]+)+).(.*?)(?=[\s\"\\,\)\]])
旁注:匹配项并不像 traceId case那样总是出现在字符串的开头,它们可以出现在字符串的任何部分。
Java 11语言
1条答案
按热度按时间jmo0nnb31#
如果要排除
[traceId=
,可以将模式写为Regex demo
或者,如果要匹配第一个点之前的
9
,并Assert字符类中列出的字符之一或模式末尾的字符串末尾:Regex demo