Php 检查字符串是否与特定模式匹配
我正在尝试构建一个逻辑,它将检查字符串的匹配模式。要匹配的模式是这样构建的:Php 检查字符串是否与特定模式匹配,php,regex,string,Php,Regex,String,我正在尝试构建一个逻辑,它将检查字符串的匹配模式。要匹配的模式是这样构建的: + = 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来完成这项任务?
+ = 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来完成这项任务?多亏了你们,我成功地用传递的模式语法构建了一个正则表达式 这是我最后给出的代码示例
$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);
$pattern=“e+(d/s)”;
$string=“es”;
$a=str_replace(数组(“(“,”,“/”),数组(“,”,”),$pattern);
$b=爆炸(“+”,$a);
$ext=”“;
对于($i=0;$i1)$c=“[”$c.“]”;
@$ext.=“(?=*”.“$c.””;
}
$ext=“/^”。$ext.+$/m”;
$test=preg_match($ext,$string);
评论不用于扩展讨论;这段对话已经结束。