php 表达式 判断,PHP判断表达式中括号是否匹配的简单实例

PHP判断表达式中括号是否匹配的简单实例

正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。下面小编就为大家带来一篇PHP判断表达式中括号是否匹配的`简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。

如下所示:

/**

* title: 判断表达式中括号是否匹配

* Description: () 匹配 )(不匹配 利用压栈和出栈

* @author Mr Lv

*/

function isValid($expstr) {

$temp = array();

for ($i=0; $i

$ch = $expstr[$i];

switch($ch) {

case '(':

array_push($temp, '(');

break;

case ')':

if (empty($temp) || array_pop($temp) != '(') {

return "缺少左括号(";

}

}

}

return empty($temp) == true ? "表达式匹配" : "缺少右括号)";

}

$expstrA = "(1+3(6*4)-(2+3))()(";

$expstrB = "(1+3(6*4)-(2+3))()";

$expstrC = "(1+3(6*4)-(2+3)))";

echo isValid($expstrA);

echo "
";

echo isValid($expstrB);

echo "
";

echo isValid($expstrC);

?>

页面信息:

缺少右括号)

表达式匹配

缺少左括号(

以上就是小编为大家带来的PHP判断表达式中括号是否匹配的简单实例全部内容了,希望对大家工作有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用栈来判断表达式括号是否匹配。具体步骤如下: 1. 创建一个空栈。 2. 从左到右遍历表达式的每个字符。 3. 如果当前字符是左括号((、[、{),则将其压入栈。 4. 如果当前字符是右括号())、]、}),则进行如下操作: - 如果栈为空,则说明右括号多余,表达式括号匹配。 - 如果栈不为空,则将栈顶元素弹出。 - 如果弹出的左括号与当前右括号匹配,则表达式括号匹配。 5. 如果表达式的所有字符都已遍历完毕,且栈为空,则表达式括号匹配;否则,表达式括号匹配。 示例代码如下: ```python def is_bracket_match(expression): stack = [] for ch in expression: if ch in '([{': stack.append(ch) elif ch in ')]}': if not stack: return False left = stack.pop() if (left == '(' and ch != ')') or \ (left == '[' and ch != ']') or \ (left == '{' and ch != '}'): return False return not stack ``` 测试代码: ```python assert is_bracket_match('()') assert is_bracket_match('()[]{}') assert not is_bracket_match('(]') assert not is_bracket_match('([)]') assert not is_bracket_match('{[])(}') ``` 注意,上述代码只能判断表达式括号是否匹配,不能判断括号的嵌套关系是否正确,比如`[(])`这种表达式虽然括号数量相等,但是括号的嵌套关系不正确。如果需要判断括号的嵌套关系是否正确,可以使用递归的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值