文字分隔符(分隔符在 \Q \E 块内)

Literal delimiter ( delimiter inside \Q \E block )

我一直在尝试基于 RegEx 制作一些功能,其中大部分使用 \Q\E 作为 RegEx pattern 是用户输入。

因此,假设我们正在使用 delimiter / 并希望将其与 / 进行匹配,该函数将在 [=18= 的行中构造一些东西].

我不确定为什么 /\Q/\E/ 不匹配 / 但它匹配所有其他分隔符,除非您使用与 input.[=22= 相同的分隔符]

也许,它认为定界符是结尾,即使它在纯文字块中,转义符也是文字。不确定,试了一堆。

希望有人能帮助我找到解决此问题的正确方法。

有助于理解 / 不是正则表达式元字符,如 *(。它很特别,因为您使用它来分隔正则表达式本身,而转义正则表达式分隔符的唯一方法是使用反斜杠 (\/).

但您不需要使用 \Q\Epreg_quote() 方法采用 delimiter 参数,因此它可以在需要的地方正确添加反斜杠。