这样做的正确方法是什么?
<?php
$word = 'dogcatdog';
preg_match( '/do'."[^0-9]".'atdog/i', $word, $matches );
print_r($matches);
?>
我想要返回“gc”。
我一直收到错误:“未知修饰符'['”。
答案 0 :(得分:4)
$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;
和presto!
答案 1 :(得分: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 );
然而,这似乎毫无意义。
答案 2 :(得分:0)
我不知道具体的PHP语法,但试试这个:
preg_match( '/do([^0-9]+)atdog/i', $word, $matches );
答案 3 :(得分:0)
(示例中的字符串语法错误。)
如果您想捕获某些内容,则需要将其括在(
paranthesis )
中。
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
答案 4 :(得分:0)
试试这个,我纠正了你的语法错误:
<?php
$word = 'dogcatdog';
preg_match("/do([^0-9]+)atdog/i", $word, $matches);
print_r($matches);
?>