2011-02-05 107 views
1

这样做的正确方法是什么?regexp freebie ...我该怎么做?

<?php 
$word = 'dogcatdog'; 
preg_match('/do'."[^0-9]".'atdog/i', $word, $matches); 
print_r($matches); 
?> 

我想返回“gc”。

我不断收到一个错误:“未知修饰符”['“。

+0

你能解决你的代码吗?目前它会给出语法错误。 – NikiC 2011-02-05 00:25:25

+0

请发布原始码,您错过了一个报价或者2. – 2011-02-05 00:25:59

+0

@The Scrum Meister - 发生的报价过多 – ocodo 2011-02-05 00:28:47

回答

4

以及如果两个狗被周围的猫,我们可以观察到的第一件事是,猫将开始发出嘘声了很多,这将产生一个“Hsssss ”。然后这些狗会开始吠叫和咆哮很多,这给了我们一个“Grrr Grrr BARK”。所以一起这将产生像“Hsssss Grrr Grrr Hsssss BARK BARK Hsssss Grrr”。所以,现在,请记住我们希望“gc”作为我们的最终结果,我们应用以下内容

$word = 'dogcatdog'; 
preg_match("[r]+", $word, $matches); 
preg_match("(BARK)", $word, $matches); 
preg_match("[Hs]+", $word, $matches); 
$matches = "c"; 
preg_match("[G]+", $word, $matchesFinal); 
$matches = $matchesFinal[0] . $matches; 

and presto!

0

我不知道具体的PHP语法,但试试这个:

preg_match('/do([^0-9]+)atdog/i', $word, $matches); 
1
preg_match('/do([a-z]{2})atdog/i', $word, $matches); 

应该得到它,你永远不会做[^0-9]如果你正在努力寻找gc。这只是要找到任何非数字字符,所以会包括所有标点符号,除了0..9之外的任何其他内容。

当然,如果你真的只是想匹配gc内的字符串,你会的。

preg_match('/do(gc)atdog/i', $word, $matches); 

但是,这似乎毫无意义。

0

试试这个,我纠正你的语法错误:

<?php 
$word = 'dogcatdog'; 
preg_match("/do([^0-9]+)atdog/i", $word, $matches); 
print_r($matches); 
?>