regex 不同模式的正则表达式多重排除和匹配

k4aesqcs  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(151)

我想排除一些特定的单词,如果这些单词不匹配,那么应该匹配一个md5哈希,例如。
这里以小圆木为例

"value": "ef51be4506d7d287abc8c26ea6c495f6", "u_jira_status": "", "u_quarter_closed": "", "file_hash": "ef51be4506d7d287abc8c26ea6c495f6", "escalation": "0", "upon_approval": "proceed", "correlation_id": "", "cyber_kill_change": "ef51be4506d7d287abc8c26ea6c495f6", "sys_id": "ef51be4506d7d287abc8c26ea6c495f6", "u_business_service": "", "destination_ip": "ef51be4506d7d287abc8c26ea6c495f6", u'test': u'9db92f08db4f951423c87d84f39619ef'

正如您所看到的,有多个值应该匹配,只是不包括“value”和“id”
这里是我目前使用的正则表达式

([^value|^id](\":\s\"|':\su')\b)[a-fA-F\d]{32}\b

有两种情况在排除之后可能是“某物”:“hash”“某个东西”:u '哈希'
使用前面的正则表达式,结果如下:x1c 0d1x
结果如预期的那样排除了value和id,但是有一个名为“cyber_kill_change”的值由于某种原因而不匹配,而其他值如预期的那样匹配“file_hash”、“destination_ip”和“test”。“请输入以下信息:“”“”“”“一种新型的汽车制动器
而不仅仅是MD5(在本例中,所有3个匹配项都相同)9db 92 f08 db 4f 951423 c87 d84 f39619 ef
有人能给我解释一下如何正确配对吗?

注意对于排除项,我不能使用类似于此(?〈!value| id)我想添加正则表达式的软件不接受〈和!。如果有帮助的话,我正在尝试将此正则表达式用于XSOAR,这里有一些允许的Syntax的文档

jyztefdp

jyztefdp1#

“cyber_kill_change”以字符“e”结尾,这与“value”中的最后一个字符相同,这就是它也被排除在外的原因。当您使用方括号[]时,问题就开始了,这是一个“字符类”,意思是“单词value或Id中的任何字符都将作为单个字符匹配,而不是作为一个单词匹配”。它与以下内容相同:

[value|id]=(v|a|l|u|e|i|d)

要完全匹配单词,可以使用(value|id),也可以尝试使用以下表达式:

((?<!(value|id))(\":\s\"|':\su')\b)[a-fA-F\d]{32}\b

我使用CyrilEx Regex Tester检查表达式,得到的结果与下图所示相同:
Regex Tester

相关问题