“负向前瞻”,"负向预查"和"负向环视"都是指相同的正则表达式概念,它们是正则表达式中的一种机制,可以在匹配字符串时,限制后续匹配的字符串必须满足某些条件,但并不会消耗输入字符串的字符。本质上,它们都是一种零宽度断言,即它们只是断言某些文本在输入中存在,但不会在最终的匹配结果中出现。它们广泛用于正则表达式引擎的高级特性,用于匹配更为复杂的文本模式或限制条件。

inner_div=re.sub(r'\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(?!\.(png|jpg|pdf|\w+))', '', inner_div)

这是一个正则表达式,用于将字符串中的数字格式的UUID替换为空字符串。具体解释如下:

\b 表示单词边界,确保只替换整个UUID而不是部分UUID。
[0-9a-fA-F]{8} 匹配8个十六进制数字,表示UUID的第1个部分。

  • 表示分隔符,将UUID分为5个部分。
    [0-9a-fA-F]{4} 匹配4个十六进制数字,表示UUID的第2到第5个部分。
    -[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12} 匹配UUID的最后3个部分,每个部分都是由4个十六进制数字组成。
    (?!.(png|jpg|pdf|\w+)) 是一个负向预查,确保UUID后面不是以.png/jpg/pdf/w+这些文件扩展名结尾,避免误删图片等文件。
    最终,re.sub()函数会将匹配到的UUID替换为空字符串,得到inner_div中不包含UUID的部分。

这段代码是一个正则表达式,用于将 inner_div 变量中任何形如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 格式的字符串替换为空字符串。其中,x 表示 0-9、A-F、a-f 中的任意一个字符。这个字符串形式通常用于表示 UUID(Universally Unique Identifier),也叫 GUID(Globally Unique Identifier),是一种标识符。

正则表达式包含了下面几个元素:

\b: 表示匹配词语边界,即在该字符串前后不能有字母、数字、下划线等字符。
[0-9a-fA-F]: 表示只匹配数字和字母 A-F 和 a-f 中的一个字符。
{8}: 表示前面一个字符正好重复 8 次。
-: 表示匹配 “-”
(?!.(png|jpg|pdf|\w+)): 这是一个负向前瞻,表示后面的字符串必须不以 .png、.jpg、.pdf 或字母、数字及下划线中的任意一个字符作为结尾。
整个正则表达式的作用是在 inner_div 变量中找到符合上述 UUID 格式但不以 .png、.jpg、.pdf 或字母、数字、下划线中的其他字符作为结尾的字符串,将其替换为空字符串,即删除该字符串。

06-02 14:17