我正在尝试建立一种逻辑,该逻辑将检查字符串是否匹配模式。匹配的模式是这样构建的:
+ = 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来完成此任务吗?
答案 0 :(得分:0)
感谢你们,我设法通过传递的模式语法构建了一个正则表达式。
这是我最后得到的代码示例
$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);