regex JWT ES256正则表达式,无法添加排除项[已关闭]

x7yiwoj4  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(106)

**已关闭。**此问题需要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语言

jmo0nnb3

jmo0nnb31#

如果要排除[traceId=,可以将模式写为

(?<!\[traceId=)\b[\w-]+\.[\w-]+\.[\w-]+\b

Regex demo
或者,如果要匹配第一个点之前的9,并Assert字符类中列出的字符之一或模式末尾的字符串末尾:

(?<!\[traceId=)\b[\w-]*9\.[\w-]+\.[\w-]+(?=[\s\"\\,)\]]|$)

Regex demo

相关问题