[摘 要]在动态网页设计中,利用正则表达式可以高效、快速地进行开发,本文探讨了在PHP中利用正则表达式进行url地址解析,密码和邮件验证以及文本文件的处理。   [关键词]正则表达式 PHP 动态网页

[中图分类号]TP[文献标识码]A[文章编号]1007-9416(2010)02-0052-02

1 正则表达式

正则表达式由美国数学家Stephen Kleene于1956年提出,主要用途是用来描述正则集代数。正则表达式提供了一种从字符集中搜寻特定字符串的机制,它让用户使用一系列的指定字符构建匹配模式,并将匹配模式与相应的数据文件、程序输入等目标对象进行比较,再根据比较的结果执行对应的程序。

正则表达式功能强大,具体而言,它有四大功能:查询、提取、分割、替换。这四大功能在动态网页开发中都得到了很好的应用。本文以PHP编程中的文本数据处理为例子,讨论正则表达式在动态网页中的应用。

2 PHP中的正则表达式

正则表达式是通过在一对分隔符之间放入表达式模式的各种组件来构造一个表达式,即/expression/。表达式由普通字符(例如字符a-z)和特殊字符(元字符)组成。普通字符指的是未显式指定为元字符的打印和非打印字符,包括所有的大小写字母、数字、标点符号等等。而特殊字符,即元字符,指的是一些具有特殊含义的字符,具体而言,主要有以下一些。

$符号。匹配输入字符串的结尾,例如abc$与“ddd abc”匹配,如果要匹配$字符本身,则要用\$,其它的元字符类似。

*符号。匹配前面的子表达式零次或多次,如ab*与“ab”,“abb”,“abbbbb”等都匹配。

+符号。匹配前面的子表达式一次或多次,如ab+与“abb”,“abbb”,“abbbbb”等匹配,但与“ab”不匹配。

(和)符号。用来标记一个子表达式的开始和结束位置,这个子表达式可以供以后使用。

.符号。匹配除换行符\n之外的任何单字符。如(.)+可以匹配除换行符外的所有字符串。

?符号。匹配0或1个前面的字符,如ab?c?可以而且只能匹配“abc”、“abbc”、“abcc”、“abbcc”。

|符号。匹配两项之间的一个,如a|b。匹配“a”或“b”,abc|xyz可匹配“abc”或“xyz”。

{n}。n必须是一个非负整数,匹配n次,例如,a{2}不能匹配“ba”,但能匹配“baa”。

{n,}。n必须是一个非负整数,它指的是匹配至少n次,例如,a{2,}不能匹配“ba”,但能匹配“baaaaaa”中的所有的a。

{n,m}。n和m必须都是非负整数,其中n   刘七,145,男,’喜欢篮球,足球’

将其它各记录的最后一个字段也加上单引号,以便于统一的处理。

由此可以得出分析某行文本的正则表达式为:

/,(?=([^’]*’[^’]*’)*(?![^’]*’))/

这个正则表达式首先找一个引号,然后继续查找,检查逗号后面的引号数量是不是偶数,或者为0。即如果逗号后面的单引号数量是偶数,则这个逗号位于字符串外面。

下面根据前面的正则表达式可以写出一个函数,接受一个字符串参数,根据这个字符串参数中的逗号分隔符,单引号限定符分割字符串,返回结果为数组。

function SplitStr($strRecord){

$pattern=”,(?=([^’]*’[^’]*’)*(?![^’]*’))”;

$result=preg_split($pattern,$strRecord);

return $result;

}

除了处理结构化文本外,正则表达式在动态网页开发中,还经常用于对查找某此字符串,并对这些字符串作突出显示等。

例如,对某一段文本中的所有“PHP”单词进行突出显示,相关函数可以是:

function replaceStr($text){

$pattern=”\s+PHP\b”;

$aim=”$0”;

$newText=preg_replace($pattern, $aim,$text);

return $newText;

}

这里的正则表达式是在PHP作为一个单独的单词出现时,将它突出显示,函数返回的就是对应的文本。在动态网页设计中,利用这种搜索与替换功能,能够方便地为网站搜索程序加上突出显示关键词的功能,将这个例子进一步完善,也可以自动为网页中的某些关键词加入指向其它网页的超级链接或直接成为某一个搜索引擎的关键词。

4 结语

用正则表达式处理文本文件具有快速、自动的优点,能够节约大量的时间,在动态网页设计中灵活运用这一功能可以大大提高工作的效率。所以掌握正则表达式的运用是动态网页设计的重要能力。

[参考文献]

[1] 杜冬梅,许彩欣,苏健.浅谈正则表达式在web系统中的应用[J].计算机系统应用,2007,(8):87-90.

[2] 祈鸣鸣.浅析asp技术在动态网页技术中的应用[J].计算机与信息技术,2007,(18):67.

[3] 李昱,陈和平.正则表达式在数据库查询中的应用[J].计算机工程与设计,2006,(6):2303-2305.

[4] 张长富,黄中敏.javascript动态网页编程实例手册[M].海洋出版社,2005.

Java用正则表达式判断学号,利用正则表达式验证学号_利用正则表达式开发动态网页...相关推荐

  1. python身份证验证系统_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

  2. java利用监听器制作红绿灯_利用js实现简易红绿灯

    HTML代码: 在一个div容器内,设置3个span CSS代码: .red_light { width: 200px; height: 200px; border-radius: 50%; marg ...

  3. 利用python进行数据分析_利用python进行数据分析复现(1)

    一直以来,都想学习python数据分析相关的知识,总是拖拖拉拉,包括这次这个分享也是.<利用python进行数据分析 第2版>是一次无意之间在简书上看到的一个分享,我决定将很详细.一直都 ...

  4. python利用什么写模板_利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受"利奇马"的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口 ...

  5. 利用mysql做信息管理_利用MySql实现学生信息管理系统的后台数据管理

    Vol.28No.4 Apr.2012 赤峰学院学报(自然科学版)Journal of Chifeng University (Natural Science Edition )第28卷第4期(下) ...

  6. 利用mysql数据库中_利用mysql和mysqli取得mysql的所有数据库和库中的所有表

    功能:利用mysql和mysqli两种连接数据库的方法,取得Mysql服务器上的所有数据库和库中的所有表. 环境:自己用分开安装apache mysql php搭建的环境 操作系统是:windows ...

  7. 利用python构建马科维茨_利用马科维茨投资组合模型建立Alpha策略

    理论基础 马科维茨的投资组合(均值-方差.有效边界)模型最早采用了风险资产的期望收益率(均值)和用方差(或标准差)代表的风险来研究资产组合和选择问题.理论上来说可以通过投资组合规避非系统性风险. 而A ...

  8. 利用python画曲线_利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码.1XS免费资源网 直接上代码:1XS免费资源网 from sklearn.datasets import loa ...

  9. 利用python画曲线_利用Python绘制血药浓度-时间曲线——口服吸收一室模型

    血药浓度-时间曲线一般是通过拟合所测定的血药浓度点而画出来的,但是在某些时候,如阅读文献时,我们需要根据别人报道的PK参数来画出药时曲线.Python语法简单,拥有丰富的开源库,下面尝试通过Pytho ...

最新文章

  1. 此字符不允许在标识符中使用_计算机中C语言的-基本语法
  2. 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
  3. Scala基础教程(一):简介、环境安装
  4. pythonpackage详解_Python详解之包管理:__init__.py
  5. 《C语言编程魔法书:基于C11标准》——第一篇 预备知识篇 第1章 C魔法概览1.1 例说编程语言...
  6. php如何提高程序运行效率,如何提高PHP的运行效率 | 萧小寒
  7. polkit启动失败_linux某服务启动失败,提示Authorization not available. Check if polkit...问题解决...
  8. Apache模块管理
  9. flex 发送到java_(转)java与flex通信
  10. pygame 文字输入交互_如何在pygame中创建交互式对象?
  11. TortoiseSVN的安装与使用
  12. 解决:网络风暴引起的无法ping通
  13. MATLAB中画柱状图
  14. 使用JAVA开发连连看游戏
  15. 华北电力大学计算机学科排名,2018年华北电力大学世界排名、中国排名、专业排名...
  16. 代码中的软件工程:正则表达式十步通关
  17. oracle死锁级别locked_mode
  18. CoAP协议的常用开源代码实现
  19. 《程序员》6月精彩内容:物联网开发技术栈
  20. Android性能优化系列之布局优化,Android程序员校招蚂蚁金服

热门文章

  1. 转:3ds Max 2016 Biped 导出 FBX 到 Unity
  2. 1/sinx的原函数
  3. poi setFontFamily设置微软雅黑有问题??
  4. Windows Server 2016-域站点复制查询
  5. 别再说,不懂什么是图数据了
  6. 人民日报书单: 100 本增长见识的好书
  7. 解析HTTP请求报文(GET、POST)
  8. 友善串口助手与VSPD模拟串口传输信息
  9. 年度十大金融投资书籍
  10. 微信分销试试汉全的解决方案