php正则表达式的分组捕获

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

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

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

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

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

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

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

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

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中正则的异同点。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python入门

这4个Python实战项目,让你瞬间读懂Python!

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下十个Python练手的实战项目

21440
来自专栏数据派THU

独家 | 手把手教你用Python进行Web抓取(附代码)

作为一名数据科学家,我在工作中所做的第一件事就是网络数据采集。使用代码从网站收集数据,当时对我来说是一个完全陌生的概念,但它是最合理、最容易获取的数据来源之一。...

26320
来自专栏Python爬虫实战

Python爬虫之二:自制简易词典

运行平台: Windows Python版本: Python3.6 IDE: PyCharm 其他工具: Chrome浏览器

14420
来自专栏LEo的网络日志

c库函数getenv引起的core dumped

47080
来自专栏Danny的专栏

【MyEclipse】——MyEclipse建立树形结构包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

12910
来自专栏Crossin的编程教室

一些常见的新手问题

本账号开设至今,回答的各种问题,没有一万也有八千了。今天挑了其中曝光率较高的一些问题,跟各位分享,供入门不久和新关注的同学参考。 1. 我是零基础,如何开始学习...

31590
来自专栏coding for love

JS常用设计模式解析02-策略模式

在于都本文之前,希望大家能够先阅读以下JS进阶系列03-JS面向对象的三大特征之多态这篇文章,了解JS的多态。在这篇文章,我们举了一个例子,就是选拔官员选拔合唱...

15030
来自专栏腾讯大数据的专栏

腾讯大数据之TDW计算引擎解析——Shuffle

腾讯分布式数据仓库(Tencent distributed Data Warehouse, 简称TDW)基于开源软件Hadoop和Hive进行构建,并且根据公司...

55380
来自专栏Crossin的编程教室

Python 抓取网页乱码原因分析

在用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码。 发生这种情况的最大可能性就是编码问题:运行环境的字符编码和网页的字符编码不一致。 ...

40660
来自专栏DannyHoo的专栏

定位1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

11720

扫码关注云+社区

领取腾讯云代金券