regexp freebie ...我该怎么做?
问题描述:
这样做的正确方法是什么?regexp freebie ...我该怎么做?
<?php
$word = 'dogcatdog';
preg_match('/do'."[^0-9]".'atdog/i', $word, $matches);
print_r($matches);
?>
我想返回“gc”。
我不断收到一个错误:“未知修饰符”['“。
答
以及如果两个狗被周围的猫,我们可以观察到的第一件事是,猫将开始发出嘘声了很多,这将产生一个“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!
答
我不知道具体的PHP语法,但试试这个:
preg_match('/do([^0-9]+)atdog/i', $word, $matches);
答
(在例子中的字符串语法错了。)
如果你想捕捉的东西,你需要附上它在(
要求)
。
preg_match('/do([^0-9]+)atdog/i', $word, $matches);
在这种情况下gc
将出现在$matches[1]
。结果数组始终由捕获花括号枚举。
这里是工具,可以与构建正则表达式帮助一个不错的名单,有用的上手:https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world
答
preg_match('/do([a-z]{2})atdog/i', $word, $matches);
应该得到它,你永远不会做[^0-9]
如果你正在努力寻找gc
。这只是要找到任何非数字字符,所以会包括所有标点符号,除了0..9之外的任何其他内容。
当然,如果你真的只是想匹配gc
内的字符串,你会的。
preg_match('/do(gc)atdog/i', $word, $matches);
但是,这似乎毫无意义。
答
试试这个,我纠正你的语法错误:
<?php
$word = 'dogcatdog';
preg_match("/do([^0-9]+)atdog/i", $word, $matches);
print_r($matches);
?>
你能解决你的代码吗?目前它会给出语法错误。 – NikiC 2011-02-05 00:25:25
请发布原始码,您错过了一个报价或者2. – 2011-02-05 00:25:59
@The Scrum Meister - 发生的报价过多 – ocodo 2011-02-05 00:28:47