1

我刚刚在 WordPress 核心中遇到了一个让我很感兴趣的正则表达式……我以前发现过这样的正则表达式并想知道它们,但它们有效,所以我没有改变它们。我感兴趣的部分如下:

|(?<!%)%f|并且|(?<!%)(%s)|- 注意它们是如何被管道而不是正斜杠包围的?

我做了一些搜索,无法找出表达式中的这种变化?我知道,在他们自己的表达中,他们几乎就像or- 我明白了。但是代替正斜杠?

有人可以解释一下这里发生了什么吗?我唯一的想法之一是以下几点......

|(?<!%)意味着要么什么都没有,要么意味着期待。

(%s)|意味着要么(%s)或没有...

这将是典型的管道。但是,正如我所说,我以前见过它代替正斜杠,所以我不确定这是否是 PCRE 的一些未记录的功能或类似的东西?

编辑

如果您有管道,则不需要正斜杠。如果您没有管道,则会收到正则表达式语法错误。

4

2 回答 2

1

它们只是PCRE样式的不同分隔符REGEX......我自己使用感叹号。

管道是分隔符,而您习惯使用的是斜线。

!^[A-Z]+$!i- 所有字母字符不区分大小写。

有关分隔符的更多信息: http ://www.php.net/manual/en/regexp.reference.delimiters.php

#请注意,他们在示例和%标志中使用字符。

于 2013-04-16T04:29:22.643 回答
0

什么都没有发生,管道可以用作模式周围的分隔符,代替/like ~, #, @, ...

于 2013-04-16T04:32:44.653 回答