需要用正则表达式获取字符串的标题。标题标签是h1~h6。

使用正则表达式:"@(.*?)@"或者'(.*?)@'。使用了@作为分隔符,注意单双引号的差别\\1与\1.

例1

代码如下 复制代码

$str='

php php php php php php1

php php php php php php2

php php php php php php3

php php php php php php4

';

preg_match_all("@(.*?)@",$str,$all);

print_r($all);

?>

结果

Array

(

[0] => Array

(

[0] =>

php php php php php php1

[1] =>

php php php php php php2

[2] =>

php php php php php php3

[3] =>

php php php php php php4

)

[1] => Array

(

[0] => 1

[1] => 2

[2] => 3

[3] => 4

)

[2] => Array

(

[0] => php php php php php php1

[1] => php php php php php php2

[2] => php php php php php php3

[3] => php php php php php php4

)

)

例2

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

功能

在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。

replacement可以包含\\n形式或$n形式的逆向引用,n可以为0到99,\\n表示匹配pattern第n个子模式的文本,\\0表示匹配整个pattern的文本。

子模式

$pattern参数中被圆括号括起来的正则表达式,子模式的数目即从左到右圆括号的数目。(pattern即模式)

例1:最简单最有用的例子是确定文字中连续出现两个相同单词的位置

代码如下 复(www.111cn.net)制代码

$string = "Is is the cost of of gasoline going up up";

$pattern = "/\b([a-z]+) \\1\b/i"; //这里的\\1不能使用\$1或$1

$str = preg_replace($pattern, "\\1", $string); //这里的\\1可以使用\$1或$1,引用第一个子匹配

echo $str; //效果是Is the cost of gasoline going up

?>

例中的子表达式就是圆括号内的项。\b匹配单词的开始或结束。+匹配重复一次或更多次。

该子表达式匹配的是一个或多个字母字符的单词,即由'[a-z]+'匹配的。

该正则表达式的第二部分是对前面所捕获的子匹配的引用,也就是由附加表达式所匹配的第二次出现的单词,用'\\1'来引用第一个子匹配,第一个\是转义符。

i是正则表达式中的修正符。i:忽略大小写。

例3:

正则表达式的逆向引用($0-99或\\0-99)和子模式以(/()/)开始。

这里$0是全部匹配模式的匹配项。$1是第1个子匹配,$2至$99依次是第2个至第99个子匹配。

用$1-99后向引用子匹配时,如果后面的字符是数字,要用花括号区别开。例:${1}1 。

代码如下 复制代码

$string = "{April 15, 2003}";

//'w'匹配字母、数字和下划线,'d'匹配0-99数字,'+'匹配重复一次或更多次。

$pattern = "/{(\w+) (\d+), (\d+)}/i"; //在字符串中要搜索的匹配项

$replacement1 = "\${1}1,\$3";

$replacement2 = "\$0";

$replacement3 = "\$1";

$replacement4 = "\$2";

$replacement5 = "\$3";

echo "
";

//字符串被替换为与第n个被捕获的括号内的子模式所匹配的文本

print preg_replace($pattern, $replacement1, $string);

echo "
";

print preg_replace($pattern, $replacement2, $string);

echo "
";

print preg_replace($pattern, $replacement3, $string);

echo "
";

print preg_replace($pattern, $replacement4, $string);

echo "
";

print preg_replace($pattern, $replacement5, $string);

echo "
";

//一般表现形式

print preg_replace("/\w+/i","j",$string);

?>

效果:

April1,2003

{April 15, 2003}

April

15

2003

{j j, j}

测试已通过。

from:

http://www.111cn.net/phper/210/55602.htm

php 正则匹配反向引用,php正则表达式子模式的反向引用学习笔记相关推荐

  1. 正则表达式必知必会学习笔记

    正则表达式必知必会学习笔记 @(正则表达式)[regex,正则表达式,正则] 基本概述 <正则表达式必知必会>是一本很薄的书,花了两个小时左右将全书通读了一遍.这本书基本将正则表达式的常用 ...

  2. python3 正则匹配特殊符号_Python3 正则表达式特殊符号及用法(详细列表)

    字符含义 .表示匹配除了换行符外的任何字符注:通过设置 re.DOTALL 标志可以使.匹配任何字符(包含换行符) |A | B,表示匹配正则表达式 A 或者 B ^1. (脱字符)匹配输入字符串的开 ...

  3. python正则匹配ip地址_Python正则表达式匹配和提取IP地址

    Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...

  4. php 正则匹配unicode,PHP中正则表达式对UNICODE字符码的匹配方法

    网友ainiaa的问题是 PHP代码如下 代码如下:$words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVW ...

  5. java正则匹配双字节_Java 正则表达式详解(二)

    Java常用正则表达式匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用 ...

  6. php正则匹配一个汉字,php正则表达式匹配中文

    php正则匹配中文 php正则匹配中文的方法非常的简单,我们只要简单的preg_match来执行preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u&q ...

  7. P4:正则表达式(Regular Expression)学习笔记

    正则表达式学习 1.初始正则表达式 1.1正则表达式练习1 1.2正则表达式练习2 1.3正则表达式练习3 2.正则表达式源码分析 2.1 源码分析-matcher.find() 2.2源码分析- m ...

  8. python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...

  9. python正则匹配数字连续_正则表达式实现匹配连续数字的方法

    实现的要求如下: 纯数字 5-7位之间 前三位相同 从第四位开始连续 如下面的例子: 11123 #正确 22234 #正确 33345 #正确 333456 #正确 2223456 #正确 0001 ...

最新文章

  1. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  2. windows server 2003磁盘管理
  3. php报错:找不到php_pdo_oci.dll模块
  4. 深入理解Java中异常体系
  5. 智能合约如何可信的与外部世界交互
  6. 奇异值分解 VS 特征值分解
  7. Java实现Huffman哈夫曼树
  8. 将整张网页存成png图片
  9. mybatis 大于_真赞!IDEA中可以这么玩MyBatis,让编码速度飞起!
  10. spark访问不存在文件,或者空文件
  11. 易封装app网站打包工具软件v2.0版本
  12. 北京科技大学计算机考研考试科目,2020考研北京科技大学计算机考研考试科目...
  13. netty官方例子 三 http snoop监听
  14. 小喵的VUE项目搭建(一)
  15. MySQL第41题怎么评分_MySQL试题-测试、复习、查看
  16. 微信公众号的系统功能定位
  17. 从命令行中进入云主机及相关操作
  18. SurfaceView出现ANR:Surface has already been released的解决办法
  19. 采购(标准采购、标准收货) 库存(杂收、杂发) U9操作
  20. 2021届 美的笔试 C++开发工程师

热门文章

  1. C语言 字符串相关的函数
  2. C++ 预处理命令#和##用法
  3. C++学习成长的四个层次
  4. ap java内容_AP 计算机知识点总结
  5. Apache Kafka消息格式的演变(0.7.x~0.10.x)
  6. 3socket编程:UDP编程
  7. oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
  8. Linux sed 删除行命令常见使用详解
  9. container_of 用法解析
  10. Linux块设备驱动程序原理