php正则表达式的分组捕获

简介: 经过测试,发现php正则表达式获取分组捕获是从$0开始,而平时工作中JavaScript中的正则是$1..$9   在提取项目代码中的汉字时,因为当时操作速度很快(赶时间),很担心当时.properties的文件{\d}的数字顺序搞错了: 1、可能从{1}开始,而不是从{0}开始 2、可能跳着写了,比如第一个是{0}第二个需要替换的地方却写着{2} 因为使用人工手动操作的,所以这种情况是难以避免,只能说减少误操作。

经过测试,发现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中正则的异同点。

目录
相关文章
|
7月前
正则表达式分组
正则表达式分组
248 48
|
7月前
|
数据采集 算法 Java
Java 正则表达式【匹配与分组基本原理】
Java 正则表达式【匹配与分组基本原理】
|
Python
136 python高级 - 正则表达式(匹配分组)
136 python高级 - 正则表达式(匹配分组)
52 0
|
1月前
|
存储 PHP
在PHP中,正则表达式
在PHP中,正则表达式
31 5
|
1月前
|
SQL PHP 数据库
20 PHP如何捕获sql错误
路老师带你深入学习PHP,掌握技术干货。本文介绍了PDO中捕获SQL错误的三种模式:默认模式、警告模式和异常模式,以及如何使用errorCode()和errorInfo()方法进行错误处理。
51 5
|
2月前
|
PHP 数据库 开发者
PHP中的异常处理:捕获与处理错误
【10月更文挑战第20天】在代码的海洋中,异常就像是突如其来的风暴,可能会打翻我们的船只。了解如何在PHP中搭建一个坚固的避风港——使用异常处理机制来捕获和处理这些不期而至的错误,是每位船长(开发者)必须掌握的技能。本文将带你驶入这片海域,教你如何用PHP的异常处理机制来确保你的应用程序即使在遇到问题时也能优雅地航行。
|
7月前
|
PHP 开发者
【PHP 开发专栏】PHP 字符串处理与正则表达式
【4月更文挑战第30天】本文探讨了PHP中的字符串处理和正则表达式应用。字符串处理部分涵盖基本操作(如连接、长度计算、截取)、格式化(printf/sprintf)、转换(数字与字符串间转换、大小写变换)、比较。正则表达式部分介绍了基本概念、语法(字符类、量词、边界符、分组)及其在搜索替换、数据验证和信息提取中的应用。了解并熟练运用这些技术对PHP开发者至关重要。
68 3
|
7月前
|
Java 索引
正则表达式源码分析--三个常用类--分组、捕获、反向引用--String 类中使用正则表达式的代码示例和图
正则表达式源码分析--三个常用类--分组、捕获、反向引用--String 类中使用正则表达式的代码示例和图
87 0
|
JavaScript PHP
php正则表达式获取(捕获)组的笔记
@(汗)的确,网络上存在很多这样的内容了,但今天我是来补充内容的,滑稽@(你懂的) 众所周知 ,js中正则表达式()可以来获取匹配到内容,然后用$0 ...来显示
79 0
|
Linux Windows
最详解的正则表达式------贪婪和非贪婪、转义符、分组
贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。 非贪婪模式只被部分NFA引擎所支持
160 0