• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 55分钟学会正则表达式

55分钟学会正则表达式

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了30分钟学会正则表达式,正则表达式,java正则表达式教程,手机号正则表达式,c++正则表达式语法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

什么是正则

正则表达式是一种用来描述一定数量文本的模式,用来匹配相同规范样式的文本。在JavaScript中用RegExp对象表示正则表达式( 即Regular Eexpression),它是对字符串执行模式匹配的强大工具。

正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用,比如正则表达式被用于:

  • 检查文本中是否含有指定的特征词
  • 找出文中匹配特征词的位置
  • 从文本中提取信息,比如:字符串的子串
  • 修改文本

与文本编辑器相似,几乎所有的高级编程语言都支持正则表达式。在这样的语境下,“文本”也就是一个字符串,可以执行的操作都是类似的。一些编程语言(比如Perl,JavaScript)会检查正则表达式的语法。

正则表达式是什么?

正则表达式只是一个字符串。没有长度限制,但是,这样的正则表达式长度往往较短。如下所示是一些正则表达式的例子:

  • I had a \S+ day today
  • [A-Za-z0-9\-_]{3,16}
  • \d\d\d\d-\d\d-\d\d
  • v(\d+)(\.\d+)*
  • TotalMessages="(.*?)"
  • <[^<>]>

这些字符串实际上都是微型计算机程序。正则表达式的语法,实际上是一种轻量级、简洁、适用于特定领域的编程语言。记住这一点,那么你就很容易理解下面的事情:

  • 每一个正则表达式,都可以分解为一个指令序列,比如“先找到这样的字符,再找到那样的字符,再从中找到一个字符。。。”
  • 每一个正则表达式都有输入(文本)和输出(匹配规则的输出,有时是修改后的文本)
  • 正则表达式有可能出现语法错误——不是所有的字符串都是正则表达式
  • 正则表达式语法很有个性,也可以说很恐怖
  • 有时可以通过编译,使得正则表达式执行更快

在实现中,正则表达式还有其他的特点。本文将重点讨论正则表达式的核心语法,在几乎所有的正则表达式中都可以见到这些规则。

特别提示:正则表达式与文件通配语法无关,比如 *.xml

正则表达式的基础语法

字符

正则表达式中包含了一系列的字符,这些字符只能匹配它们本身。有一些被称为“元字符”的特殊字符,可以匹配一些特殊规则。

如下所示的例子中,我用红色标出了元字符。

  • I had a \S+ day today
  • [A-Za-z0-9\-_]{3,16}
  • \d\d\d\d-\d\d-\d\d
  • v(\d+)(\.\d+)*
  • TotalMessages="(.*?)"
  • <[^<>]*>

大部分的字符,包括所有的字母和数字字符,是普通字符。也就意味着,它们只能匹配它们自己,如下所示的正则表达式:

cat

意味着,只能匹配一个字符串,以“c”开头,然后是字符“a”,紧跟着是字符“t”的字符串。

到目前为止,正则表达式的功能类似于

  • 常规的Find功能
  • Java中的 String.indexOf() 函数
  • PHP中的 strpos()函数
  • 等等

注意:不做特殊说明,正则表达式中是区分大小写的。但是,几乎所有正则表达式的实现,都会提供一个Flag用来控制是否区分大小写。

点“.”

我们第一个要讲解的元字符是“.”。这个符号意味着可以匹配任意一个字符。如下所示的正则表达式:

c.t

意味着匹配“以c开头,之后是任意一个字符,紧跟着是字母t”的字符串。

在一段文本中,这样的正则表达式可以用来找出cat, cot, czt这样的字符串,甚至可以找出c.t这样的组合,但是不能找到ct或者是coot这样的字符串。

使用反斜杠“\”可以忽略元字符,使得元字符的功能与普通字符一样。所以,正则表达式

c\.t

表示“找到字母c,然后是一个句号(“.”),紧跟着字母t”

反斜杠本身也是一个元字符,这意味着反斜杠本身也可以通过相似的方法变回到普通字符的用途。因此,正则表达式

c\\t

表示匹配“以字符c开头,然后是一个反斜杠,紧跟着是字母t”的字符串。

注意!在正则表达式的实现中,.是不能用于匹配换行符的。”换行符“的表示方法在不同实现中也不同。实际编程时,请参考相关文档。在本文中,我认为.是可以匹配任意字符的。实现环境通常会提供一个Flag标志位,来控制这一点。

字符类

字符类是一组在方括号内的字符,表示可以匹配其中的任何一个字符。

  • 正则表达式c[aeiou]t,表示可以匹配的字符串是”以c开头,接着是aeiou中的任何一个字符,最后以t结尾”。在文本的实际应用中,这样的正则表达式可以匹配:cat,cet,cit,cot,cut五种字符串。
  • 正则表达式[0123456789]表示匹配任意一个整数。
  • 正则表达式[a]表示匹配单字符a。

包含忽略字符的例子

  • \[a\]

    表示匹配字符串[a]
  • [\[\]\ab]表示匹配的字符为”[“或者”]”或者”a”,或者”b”
  • [\\\[\]]表示匹配的字符为”\”或者 “[”或者”]”

在字符类中,字符的重复和出现顺序并不重要。[dabaaabcc]与[abc]是相同的

重要提示:字符类中和字符类外的规则有时不同,一些字符在字符类中是元字符,在字符类外是普通字符。一些字符正好相反。还有一些字符在字符类中和字符类外都是元字符,这要视情况而定!

比如,.表示匹配任意一个字符,而[.]表示匹配一个全角句号。这不是一回事!

字符类的范围

在字符集中,你可以通过使用短横线来表示匹配字母或数字的范围。

  • [b-f]与[b,c,d,e,f]相同,都是匹配一个字符”b”或”c”或”d”或”e”或”f”
  • [A-Z]与[ABCDEFGHIJKLMNOPQRSTUVWXYZ]相同,都是匹配任意一个大写字母。
  • [1-9]与[123456789]相同,都是匹配任意一个非零数字。

练习

使用目前我们已经讲解的正则表达式相关知识,在字典中匹配找到含有最多连续元音的单词,同时找到含有最多连续辅音的单词。

答案

[aeiou][aeiou][aeiou][aeiou][aeiou][aeiou] 这样的正则表达式,可以匹配连续含有六个元音的单词,比如 euouae 和 euouaes。

同样的,恐怖的正则表达式[bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrst

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 55分钟学会正则表达式

相关文章

  • 2017-05-11Python爬虫正则表达式常用符号和方法
  • 2017-05-11javascript 小时:分钟的正则表达式
  • 2017-05-11最常用的PHP正则表达式收集整理
  • 2017-05-11[a] 1 [/a]转换为网址的UBB的正则
  • 2017-05-11php匹配网址的正则 几乎可以匹配任何网址
  • 2017-05-11PHP中的递归正则使用说明
  • 2017-05-11Java中使用正则表达式处理文本数据
  • 2017-05-11代替正则——HyperScriptExpression联合开发倡议公告
  • 2017-05-11正值表达式匹配html标签的属性值
  • 2017-05-11正则表达式 应用四则

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 正则表达式教程之匹配单个字符详解
    • JS、replace利用正则表达式替换SQL所有参数为指定格式的数据
    • JS 正则表达式中小括号的应用
    • 一个好用的正则匹配电话号手机号邮箱网址的方法
    • JavaScript正则表达式校验非零的负整数实例
    • C# 正则表达式 使用介绍
    • JavaScript 正则表达式使用详细参数
    • mysql update正则替换sql语句
    • 正则表达式零宽断言详解
    • javascript中使用正则表达式进行字符串验证示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有