我需要找出一个单词有多少起始辅音。该号码稍后在程序中使用。 下面的代码确实有效,我想知道是否可以使用正则表达式执行此操作。
$mystring ="SomeStringExample";
$mystring2 =("bcdfghjklmnpqrstvwxyzABCDFGHJKLMNPQRSTWVXYZ");
$var = strspn($mystring, $mystring2);
使用正则表达式
$regex= ("^[b-df-hj-np-tv-z]");
$var = strspn($mystring, $regex);
不起作用,因为strspn需要两个字符串。
答案 0 :(得分:0)
这是使用preg_match
:
$string ="SomeStringExample";
preg_match('/^[b-df-hj-np-tv-z]*/i', $string, $matches);
$count = strlen($matches[0]);
正则表达式在字符串的开头(*
)匹配零个或多个(/i
)不区分大小写的[b-df-hj-np-tv-z]
)辅音^
并存储匹配的$matches
数组中的内容。然后,只需使用strlen
获取匹配字符串的长度即可。不是最优雅的解决方案,但我相信它可以回答你的问题。
答案 1 :(得分:0)
这样做。整个正则表达式的结果将存储在$matches[0]
中,匹配第一个捕获括号的文本将存储在$matches[1]
中,因此找到$matches[1]
(甚至$matches[0]
的长度因为捕获是整个正则表达式)将等同于你的代码所做的。但性能可能不会更好
$mystring ="SomeStringExample";
$regex= ("/^([b-df-hj-np-tv-z]*)/i");
preg_match_all($regex,$mystring,$matches);
echo sizeof($matches[1]);