这些天需要大量处理一些html文本,需要用到正则表达式,于是根据manual尝试了一下,特此记录。
Php有两种类型的正则表达式,一种是与perl兼容的表达式,一种是扩展POSIX的。一般我们使用的是Perl兼容的正则表达式。
使用简单的表达式弄清楚以下几个步骤就是了:
1. 弄清楚PHP中的正则表达式是以“/”开始,并以“/“结束,比如: /abc/ --表示在任意位置包含abc的字符串。
2. 理解PHP中正则表达式的特殊字符。包括:“/”、“\”、“^“、“$”……。这些字符都代表特殊的含义,如果要在表达式中使用这些字符的原本意义,则需要使用“\“来进行转义。
比如: /price: \$32.00/ 是用来匹配 "Orange's price: $32.00, and apple's price: $64.00"。
"\"除了将特殊字符转义为一般字符之外,还能将一些指定的字符转义成特殊的意义。例如 \d 表示数字,\s表示任意空白字符。
以上所有特殊的字符都可以参考Php Manual:http://www.docviewer.net/docs/php/php_manual/regexp.reference.html
。
这些特殊字符我们一般只需要了解个大概就够了,也就是那些常用的。其他的等到要用的时候再查文档就行了。
3. 了解了这些之后我们就可以开始使用正则表达式了。PHP中表达式的函数主要有:
点击上面的链接我们可以查看详细的使用方法。
下面我们以常用的preg_replace为例来简要说明一下使用方法。
比如,我们要将某个网页的<body>后增加一个<div id="head"></div>,我们可以使用如下的语句:
$text = '<html><head>...</head><body>...</body></html>';
preg_replace('/\<body>/', '<body><div id="head"></div>', $text);
其中参数值一:'/\<body>/'就是一个正则表达式,表示$text中包含<body>,因为"<"是一个特殊字符,所以需要“/“来进行转义。
参数值二:'<body><div id="head"></div>'就是一个普通的字符串,这个是不需要使用任何转义的。
参数值三:要来进行替换的原文本。
其中参数一和参数二不仅仅可以是字符串,还可以是字符串数组,比如要将一个html文本中的<head>和<body>分别替换成不同的内容,就可以如下使用:
$text = '<html><head>...</head><body>...</body></html>';
$patterns = array('/\<head>/', '/\<body>/');
$replacements = array('<head><link type="text/css" src="style.css"', '<body><div id="head"></div>');
ksort($patterns);
ksort($replacements);
preg_replace($patterns, $replacements, $text);
这样就在<head>和<body>之后分别增加了相应的内容了。在上述的例子中,主义要使用ksort对$patterns和$replacements进行排序,否则两者对应的关系是逆序的,具体的可参考:http://www.docviewer.net/docs/php/php_manual/function.preg-replace.html
。
总结:所有的正则表达式语言都是差不多的,一般来说我们只要掌握大体的使用原则,然后参考对应语言的文档,就能够边学边用了。
分享到:
相关推荐
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。
目前,正则表达式已经在很多软件中得到广泛...为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的
Basic,Perl,JavaScript和PHP都支持正则表达式希望在这篇入门指导结束Mitchell(作者自己)可以让你在PHP中 能应用些基本正则表达式正则表达式是在各种各样语言中突出古怪特征中种但是由于它们看起来是很难个概念 所以...
正则表达式,图文并貌,教你快速入门与提高
java正则表达式.docx 如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。
第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于有部分经验的读者... 6 检索文本文件:Egrep. 6 ...
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。
目前,正则表达式已经在很多软件中得到广泛的...为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。
关于正则表达式的入门介绍PPT文档,例如: Php内置字符簇 [[:alpha:]] 任何字母 [[:digit:]] 任何数字 [[:alnum:]] 任何字母,数字 [[:space:]] 任何空白字符 [[:punct:]] 任何标点符号 [[:upper:]] 任何大写...
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用...本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。
为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。 例子: ^.+@.+\\..+$ 这样的代码曾经多...
正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,php等等,我今天就把我对正则表达式的理解跟大家唠唠,不当之处,请多多指教! 定位 我们什么时候...
php的正则表达式完全手册 , 例子很多 适合入门
正则表达式30分钟入门教程 常用正则表达式 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?...
正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。所以JAVA语言也不例外。正则表达式已经超出了某种语言或某个系统的...
几个编程语言,包括Visual Basic,Perl,JavaScript和PHP都支持正则表达式,希望在这篇入门指导的结束,Mitchell(作者自己)可以让你在PHP程序中能应用一些基本的正则表达式。正则表达式是在各种各样的程序语言中突出...
php的正则表达式完全手册,与详细例子,容易入门