Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Preg Match查找字符串中精确单词的计数_Php_Regex - Fatal编程技术网

Php Preg Match查找字符串中精确单词的计数

Php Preg Match查找字符串中精确单词的计数,php,regex,Php,Regex,我想找出字符串中的字数。我使用下面的正则表达式来做同样的事情 $count_keys = preg_match_all('/\bs.c.\b/', $str); 这里$str是一个字符串,我们需要从中找到单词s.c的出现次数,但是我得到了一个错误的结果,如果它们是单词#ssc或#sssc,它们也会被计算在内。请指导我在哪里出错,或者请提供正确的正则表达式代码以执行相同操作。尝试以下操作: $count_keys = preg_match_all('/\bs.c.\b/', $str); $s

我想找出字符串中的字数。我使用下面的正则表达式来做同样的事情

$count_keys = preg_match_all('/\bs.c.\b/', $str);

这里$str是一个字符串,我们需要从中找到单词s.c的出现次数,但是我得到了一个错误的结果,如果它们是单词#ssc或#sssc,它们也会被计算在内。请指导我在哪里出错,或者请提供正确的正则表达式代码以执行相同操作。

尝试以下操作:

$count_keys = preg_match_all('/\bs.c.\b/', $str);
$str = 'this is a s.c good to check s.c ';

echo $count_keys = preg_match_all('/\bs\.c/', $str);
输出:

$str = 'this is a s.c good to check s.c ';

echo $count_keys = preg_match_all('/\bs\.c/', $str);
二,


试试这个:

$str = 'this is a s.c good to check s.c ';

echo $count_keys = preg_match_all('/\bs\.c/', $str);
输出:

$str = 'this is a s.c good to check s.c ';

echo $count_keys = preg_match_all('/\bs\.c/', $str);
二,

使用substr_count()而不是preg_match_all

使用substr\u count()而不是preg\u match\u all


我认为问题在于正则表达式。如果要查找“s.c”事件,请尝试以下操作:

$count_keys = preg_match_all('/\bs\.c\b/', $str);
$count_keys = preg_match_all('/\bs\.c\.\b/', $str);
“.”之前缺少“\”,这导致了问题,因为“.”匹配正则表达式中的任何字符(换行除外)

但是,如果您正在查找“s.c.”的出现,请尝试以下操作:

$count_keys = preg_match_all('/\bs\.c\b/', $str);
$count_keys = preg_match_all('/\bs\.c\.\b/', $str);

我相信问题在于你的正则表达式。如果要查找“s.c”事件,请尝试以下操作:

$count_keys = preg_match_all('/\bs\.c\b/', $str);
$count_keys = preg_match_all('/\bs\.c\.\b/', $str);
“.”之前缺少“\”,这导致了问题,因为“.”匹配正则表达式中的任何字符(换行除外)

但是,如果您正在查找“s.c.”的出现,请尝试以下操作:

$count_keys = preg_match_all('/\bs\.c\b/', $str);
$count_keys = preg_match_all('/\bs\.c\.\b/', $str);


转义
s\.c
…在PHP
s\.c
中,仅使用
(\bs\.c)
。您正在计算
s.c.
s.c
?不清楚:在代码中,您的模式在
s.c
之后有一个
,但是,“s.c”一词的出现如下。@FrayneKonok:那么为什么正则表达式
\bs.c.\b
作为
s\.c
…在PHP
s\\.c
中只使用
(\bs\.c)
。您正在计算
s.c.
s.c
?不清楚:在代码中,您的模式在
s.c
之后有一个
/code>,但是,单词s.c的出现如下。@FrayneKonok:那么为什么正则表达式
\bs.c.\b
?唯一的问题是我们不知道OP是搜索
s.c.
还是
s.c
@WiktorStribiżew,他提到:
需要找到单词s.c
的出现次数,但OP regex在
c
后包含一个点,这是可疑的。唯一的问题是我们不知道OP是否搜索
s.c.
s.c
@WiktorStribiżew,他提到:
需要找到单词s.c
的出现次数,但是OP regex在
c
之后包含一个点-这是可疑的。非常感谢Frayne Konok这个答案并不能完全解释OP正则表达式的错误。此外,这个正则表达式将匹配“s.cc”、“s.cs”、“s.cssc”等。非常感谢Frayne Konok。这个答案并不能完全解释OP正则表达式的错误。此外,此正则表达式将匹配“s.cc”、“s.cs”、“s.cssc”等。