php语言 百分网手机站

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

时间:2020-08-09 10:51:55 php语言 我要投稿

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

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

  复制代码 代码如下:

  <table>

  <tr><td>aaaa</td></tr>

  <tr><td>bbbb</td></tr>

  <tr><td>cccc</td></tr>

  <tr><td>dddd</td></tr>

  </table>

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

  我最初的想法:

  pattern:"/<tr>[.n]*?</tr>"(这个是错误的.)

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

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

  pattern:"/<tr>(.|n)*?</tr>"(这个是可以)

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

  网上也有一答案:

  PATTEN: "/<tr>.*?</tr>/is"(很简洁很方便,赞成此方法)

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

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

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

  s (PCRE_DOTALL)

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

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

  lz试一下"/<tr>[.]*?</tr>/is"这个就知道了,

  还有()很强大的</p

  如下所示:

  <?php

  /**

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

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

  * @author Mr Lv

  */

  function isValid($expstr) {

  $temp = array();

  for ($i=0; $i<strlen($expstr); $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 "<br>";

  echo isValid($expstrB);

  echo "<br>";

  echo isValid($expstrC);

  ?>

  页面信息:

  ?

  1

  2

  3

  缺少右括号)

  表达式匹配

  缺少左括号(

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

PHP正则匹配中文字母数字正则表达式09-08

PHP正则匹配中文字母数字正则的表达式09-05

PHP判断数组是否为空的5大方法09-02

PHP中判断变量为空的方法09-26

PHP常用正则表达式09-16

PHP常用的正则表达式09-21

如何判断CPU是否过热10-08

java中lambda表达式11-26

word中怎样输入大括号10-01

word中的大括号怎么打09-17