preg_match不读取结果:定界符问题



我有字符串的一部分。当我添加一些符号时,我需要检查它是否等于另一个字符串。但是,我对定系数(我相信)不允许进行比赛。

我的if语句:

if (preg_match("{" . "$words[$counter_words]" . "[<]N}", "$corpus[$counter_corpus]")) 

我的语料库:

{3(-)D[<]AN}
{dog[<]N}
{4(-)H(')er[<]N}
{4(-)H[<]A}
{A battery[<]h}

我的部分阵列如下

dog
cat
3-D
plant

我的目标是将"狗"与" {dog [&lt;] n}"([]和{}是分界符)。为了弥补这一点,我将定界符粘贴到字符串的开始和结尾。preg_match接受它,但不匹配两个。

解决方案是什么?我找不到或想到解决方案。非常感谢您的帮助。

if (preg_match("{" . $words[$counter_words] . "\[<\]N}", $corpus[$counter_corpus]))

[]在正则表达式中具有特殊的含义。如果您不想要特殊的含义,则需要逃脱它们,[。但是由于这是在PHP字符串中,要获得字符,您必须输入\

我有字符串的一部分。当我在上添加一些符号时,我需要检查它是否等于另一个字符串。

要检查字符串是否等于另一个,我们不需要preg_match();这样做是:

if ("{{$words[$counter_words]}[<]N}" == $corpus[$counter_corpus])

如果您使用preg_match(),则必须注意Pcre Regex语法:

使用PCRE函数时,需要封闭图案 由分界符。定界符可以是任何非α数字, 非背斜线,非空格角色。

通常使用的定界符是前向斜线(/),…

添加的符号 {}在字符串的开始和末端被视为模式包含的分界符,而您意味着它们是模式的一部分。您必须添加实际的定系数:

if (preg_match("/{{$words[$counter_words]}[<]N}/", $corpus[$counter_corpus]))

也很感兴趣:

  • 双引号
  • 可变解析/复杂(卷曲)语法

最新更新