php - 检查字符串是否匹配特定模式
问题描述
我正在尝试构建一个逻辑来检查字符串是否匹配模式。要匹配的模式是这样构建的:
+ = 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);
推荐阅读
- variables - While 循环执行的时间比预期的多 1 次
- scala - Scala 标准库中的 ArrayBuffer 实现可能效率低下
- ms-access - 如何修复此错误“错误 3001:无效参数”
- python - 仅打印列表中的 1 个值,但不止一个 | SQL LITE Python
- python - 如何安装并运行 selenium 依赖 chromedriver
- regex - 用于匹配两个数字之间的字符列表的正则表达式
- android - 我应该如何解码这个 json 响应?
- python - 如何使用对数损失度量将 sgdclassifier 铰链损失与 Gridsearchcv 结合使用?
- java - 获取第二个数组中特定行或列中的最小元素
- python - 在 mathjax_config 中添加自定义 Latex 宏