我是正规表达世界的新手 我想创建一个表达式,可以在一个字符串中匹配X个字符N次 例如:
X = t
N = 2
然后它应匹配字符串test
或tit
或tt
。
答案 0 :(得分:2)
使用RegEx的解决方案
/^([^t]*t[^t]*){2}$/
N = 2
^
将正则表达式锚定在字符串的开头。
[^t]*
否定字符类,匹配t
以外的任何内容。 *
多次统一
t
其后是t
[^t]*
此外还有t
{2}
量化模式2
次。也就是说,它确保不是零次或多次,然后是t,然后不是零次或更多次。整件事必须发生2次
$
将正则表达式锚定在字符串的末尾。
<强>测试强>
$X='t';
$N=2;
$regex="/^([^".$X."]*".$X."[^".$X."]*){".$N."}$/";
echo preg_match($regex, "test" );
// => True
使用substr_count
substr_count
函数返回字符串
$X='t';
$N=2;
if ( substr_count('test', $X ) == $N )
//The string is ok
else
//The string is not ok
答案 1 :(得分:0)
这不是正则表达式的工作。您应该只计算字符串中字符t
的出现次数,并检查它是否等于2.
计算字符串中字符出现次数的规范方法是使用tr///
例如:
for my $word (qw/ test tit tt tradescantia titillate intumescent trattoria /) {
print $word, "\n" if $word =~ tr/t// == 2;
}