preg_match不读取结果:分隔符问题?

时间:2016-12-08 02:14:49

标签: php regex string if-statement 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

我的目标是匹配&#34; dog&#34;用&#34; {dog [&lt;] N}&#34; ([]和{}是分隔符)。为了弥补这一点,我将分隔符粘贴到字符串的开头和结尾。 Preg_match接受它,但两者不匹配。

这会是什么解决方案?我无法找到或想到一个解决方案。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

  

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

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

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

如果您使用preg_match(),则必须注意PCRE regex syntax

  

     使用PCRE功能时,需要包含图案      通过分隔符。分隔符可以是任何非字母数字,      非反斜杠,非空白字符。     

          经常使用的分隔符是正斜杠( / ),...

在字符串的开头和结尾添加的符号 {}被视为包含模式的分隔符,而您的意思是它们是模式的一部分。你必须添加实际的分隔符:

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

也感兴趣: