Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查字符串是否与特定模式匹配_Php_Regex_String - Fatal编程技术网

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);

评论不用于扩展讨论;这段对话已经结束。