文字分隔符(分隔符在 \Q \E 块内)
Literal delimiter ( delimiter inside \Q \E block )
我一直在尝试基于 RegEx
制作一些功能,其中大部分使用 \Q
和 \E
作为 RegEx
pattern
是用户输入。
因此,假设我们正在使用 delimiter
/
并希望将其与 /
进行匹配,该函数将在 [=18= 的行中构造一些东西].
我不确定为什么 /\Q/\E/
不匹配 /
但它匹配所有其他分隔符,除非您使用与 input
.[=22= 相同的分隔符]
也许,它认为定界符是结尾,即使它在纯文字块中,转义符也是文字。不确定,试了一堆。
希望有人能帮助我找到解决此问题的正确方法。
有助于理解 /
不是正则表达式元字符,如 *
或 (
。它很特别,因为您使用它来分隔正则表达式本身,而转义正则表达式分隔符的唯一方法是使用反斜杠 (\/
).
但您不需要使用 \Q
和 \E
。 preg_quote()
方法采用 delimiter
参数,因此它可以在需要的地方正确添加反斜杠。
我一直在尝试基于 RegEx
制作一些功能,其中大部分使用 \Q
和 \E
作为 RegEx
pattern
是用户输入。
因此,假设我们正在使用 delimiter
/
并希望将其与 /
进行匹配,该函数将在 [=18= 的行中构造一些东西].
我不确定为什么 /\Q/\E/
不匹配 /
但它匹配所有其他分隔符,除非您使用与 input
.[=22= 相同的分隔符]
也许,它认为定界符是结尾,即使它在纯文字块中,转义符也是文字。不确定,试了一堆。
希望有人能帮助我找到解决此问题的正确方法。
有助于理解 /
不是正则表达式元字符,如 *
或 (
。它很特别,因为您使用它来分隔正则表达式本身,而转义正则表达式分隔符的唯一方法是使用反斜杠 (\/
).
但您不需要使用 \Q
和 \E
。 preg_quote()
方法采用 delimiter
参数,因此它可以在需要的地方正确添加反斜杠。