php正则匹配是否有括号,PHP判断表达式中括号是否匹配

PHP判断表达式中括号是否匹配

学习PHP语言的时候,初学者往往会对数组感到一些棘手。不过在通过深入的学习之后,我们会发现,这些其实并没有想象中的困难。下面小编就为大家带来一篇PHP判断表达式中括号是否匹配的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧。

复制代码 代码如下:

aaaa
bbbb
cccc
dddd

像这种的文本,用PHP的正则表达式怎么匹配??

我最初的想法:

pattern:"/

[.n]*?"(这个是错误的)

想法思路:"."能匹配任意非换行字符,使用"[.n]"组合,使其能够匹配所有的字符(包括换行符),但天有不测风云啊——悲剧了,结果什么都没有!

经过一番啃骨之后写了另一个

pattern:"/

(.|n)*?"(这个是可以)

将“[]”换成"()",使用“|”做一个或选择,这样就行了(纳闷了,怎么"[]"也是选择方式的.就不行???)

网上也有一答案:

PATTEN: "/

.*?/is"(很简洁很方便,赞成此方法)

后记: 怎么"[]"也是选择方式的就不行???你知道的话别忘了告诉小弟一声哦……

[]里的.相当于.,仔细看正则的说明去吧

涉及到换行一般考虑用模式修正符s

s (PCRE_DOTALL)

如果设置了这个修饰符, 模式中的点号元字符匹配所有字符, 包含换行符. 如果没有这个 修饰符, 点号不匹配换行符.

[]里面的是一些范围或者组合

lz试一下"/

[.]*?/is"这个就知道了,

还有()很强大的

如下所示:

/**

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

?>

页面信息:

?

1

2

3

缺少右括号)

表达式匹配

缺少左括号(

【PHP判断表达式中括号是否匹配】相关文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值