• php正则表达式的分组捕获


    经过测试,发现php正则表达式获取分组捕获是从$0开始,而平时工作中JavaScript中的正则是$1..$9

    在提取项目代码中的汉字时,因为当时操作速度很快(赶时间),很担心当时.properties的文件{\d}的数字顺序搞错了:

    1、可能从{1}开始,而不是从{0}开始

    2、可能跳着写了,比如第一个是{0}第二个需要替换的地方却写着{2}

    因为使用人工手动操作的,所以这种情况是难以避免,只能说减少误操作。写完了,得再检查一遍,这个遇到困难了,二三千行的代码,用眼睛一行一行查,那的比较累了,而且还不一定能检查出来。一多就容易出错,而且行与行之间靠的太近了,字又太小…

    突然想起来,觉得php可以节省一点时间,读取文件,然后将关键的地方标红…

    然后就开始了:php读取文件,然后逐行的读取,使用正则表达式匹配符合{\d}的行,然后将{\d}的地方使用红色进行重点的标记,之后人工去查看每一行是能是符合规则。代码不对,却很受用,至少省了用眼睛去一个一个检查的时间:

    image

    这样一眼扫过去,就能很清楚的看出每一行顺序是否都写对了,写错了的行,前面有行号,找到相应行再改改.

       1: <!Doctype html> 
       2: <html> 
       3: <head> 
       4: <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
       5: <title>检测中文替换文字的正确性</title> 
       6: </head> 
       7: <?php 
       8:     $filename = "C:\test.properties"; 
       9:     $mode = "r"; 
      10:     $file_handle = fopen($filename, $mode); 
      11:     $lineNum = 0; 
      12:     $pattern = "/{\d}[^{}]+/"; 
      13:     if ($file_handle) { 
      14:         while (!feof($file_handle)) { 
      15:             ++$lineNum; 
      16:             $line = fgets($file_handle); 
      17:             if (preg_match($pattern, $line)) { 
      18:                 $line = preg_replace("/{\d}/", "<font color='red'>$0</font>", $line); 
      19:                 echo "行".$lineNum.":".$line."<br/><br/><br/>"; 
      20:             } 
      21:         } 
      22:     } else { 
      23:         echo "文件读取失败"; 
      24:     } 
      25:     fclose($file_handle); 
      26: ?> 
      27: </html>

    参考问题:

    用 PHP 读取文件的正确方法

    掌握 PHP 中的正则表达式(1)

    掌握 PHP 中的正则表达式(2)

    准备趁春节放假那几天再把《精通正则表达式》好好温习温习,深入研究一下php、perl、python中正则的异同点。

  • 相关阅读:
    Java基础——字符编码
    三:简单工厂模式
    二:代理模式(静态代理,动态代理)
    一:设计者模式六大原则和单例模式
    java源码
    JDK8新特性 -- Function接口: apply,andThen,compose
    JDK8新特性:Lambda表达式
    Java同步的三种实现方式
    spring boot注解和启动
    springboot:基础学习一 linux下后台启动springboot项目
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/1942032.html
Copyright © 2020-2023  润新知