首页 > 解决方案 > 检查字符串是否匹配特定模式

问题描述

我正在尝试构建一个逻辑来检查字符串是否匹配模式。要匹配的模式是这样构建的:

+ = and
/ = or

模式示例:"a+(b/c)"- 这意味着字符串应包含“a”和“b”或“c”。

在这种情况下,以下字符串应导致:

"ac" = true
"ab" = true
"abc" = true
"decfga" = true

"ad" = false
"bc" = false
"cb" = false

你会如何在 PHP 中做到这一点?有没有一种聪明的方法可以使用 preg_match 来完成这项任务?

标签: phpregexstring

解决方案


感谢你们,我设法从传递的模式语法构建了一个正则表达式。

这是我最终得到的代码示例

$pattern = "e+(d/s)";
$string = "es";

$a = str_replace(array("(",")","/"),array("","",""),$pattern);
$b = explode("+",$a);
$ext = "";
for ($i=0; $i<@count($b); $i++) {
    @$c = $b[$i];
    if (strlen($c)>1) $c = "[".$c."]";
    @$ext .= "(?=.*".$c.")";
}
$ext = "/^".$ext.".+$/m";
$test = preg_match($ext,$string);

推荐阅读