正面的负面前瞻性正则表达式

时间:2017-10-13 13:55:46

标签: regex

我有一个正则表达式:

find "'directory' | wc -l"

我的输入字符串:

^\/admin\/(?!(e06772ed-7575-4cd4-8cc6-e99bb49498c5)).*$

根据我的理解,否定前瞻应检查群组/admin/e06772ed-7575-4cd4-8cc6-e99bb49498c5 是否匹配,或者我是否错误?

由于输入字符串具有组匹配,为什么否定前瞻不起作用?我的意思是我希望我的正则表达式(e06772ed-7575-4cd4-8cc6-e99bb49498c5)匹配输入字符串e06772ed-7575-4cd4-8cc6-e99bb49498c5

删除负前瞻使得此正则表达式正常工作。

Tested with regex101.com

1 个答案:

答案 0 :(得分:1)

此问题的搭便车信息是:环视匹配位置,而不是字符串。

(?!e06772ed-7575-4cd4-8cc6-e99bb49498c5)

将匹配任何位置,即,然后是e06772ed-7575-4cd4-8cc6-e99bb49498c5

这意味着:

^\/admin\/(?!(e06772ed-7575-4cd4-8cc6-e99bb49498c5)).*$

将匹配:

/admin/abc

甚至:

/admin/e99bb49498c5

但不是:

/admin/e06772ed-7575-4cd4-8cc6-e99bb49498c5/daffdakjf;adjk;af

这正是解释为什么每当你摆脱?!时都有匹配的原因。字符串匹配完全

接下来,您可能会丢失前瞻中的括号,但它们没有通常的分组功能。