2014-10-30 75 views
-3

这是我第一次尝试PHP中的正则表达式。我想在PHP中使用正则表达式来匹配包含两组单词的句子。我已经测试过它,但它不起作用警告:preg_match():PHP中的未知修饰符

$regex= (red|green|round|sweet)[^.]*(apple|apples)  
$sentence = "I have two red apples." 

if(preg_match($regex, $sentence)) 
{ 
    echo 'MATCH!!!'; 
} else { 
    echo 'No MATCH!!!'; 
} 

我在PHP中收到错误消息。

Warning: preg_match(): Unknown modifier [ 
+4

'$正则表达式= “/(红色|绿色|轮|甜)[^] *(苹果|苹果)/”;' - 另外,如果你测试你说你贴什么,应该有抛出一个解析错误开始。 – 2014-10-30 02:51:18

+0

@ Fred-ii-我测试了正则表达式,它的工作原理。只是不在PHP中。由于某些原因,它抱怨[] – Cryssie 2014-10-30 02:53:59

+0

您发布的问题在两行中缺少分号,缺少第一个引号和标识符。我测试和工作。 – 2014-10-30 02:55:01

回答

1

正如我所说的,这是经过测试和工作的,您在第一行省略了引号和标识符,并在两行中​​省略了分号。

<?php 
$regex= "/(red|green|round|sweet)[^.]*(apple|apples)/"; 
$sentence = "I have two red apples."; 

if(preg_match($regex, $sentence)) 
{ 
    echo 'MATCH!!!'; 
} else { 
    echo 'No MATCH!!!'; 
} 
+0

谢谢。我分别测试了正则表达式。我并不认为它所需要的只是前面和后面的“/”。 – Cryssie 2014-10-30 02:59:27

+0

@Cryssie不客气Cryssie。通过PHP执行时,需要'/'标识符。 – 2014-10-30 02:59:48

2

PHP的正则表达式必须分隔字符。

$regex = '/(red|green|round|sweet)[^.]*(apple|apples)/'; 

/在这种情况下是单独的字符。

相关问题