正则表达式概述 什么是正则表达式 .

 更新时间:2013年07月20日 22:57:26   作者:  
正则表达式就是用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具
正则表达式概述

正则表达式在程序设计语言中存在着广泛的应用,特别是用来处理字符串。如匹配字符串、查找字符串、替换字符串等。可以说,正则表达式是一段文本或一个公式,它是用来描述用某种模式去匹配一类字符串的公式,并且该公式具有一定的模式。
本小节将介绍正则表达式的基本概念、第一个正则表达式,以及测试正则表达式的工具Code Architects Regex Tester。


什么是正则表达式

正则表达式(Regular Expression)起源于人类神经系统的早期研究。神经生理学家Warren McCulloch和Walter Pitts研究出一种使用数学方式描述神经网络的方法。1956年,数学家Stephen Kleene发表了一篇标题为“神经网事件的表示法”的论文,并在该论文中引入了“正则表达式”这一个概念。该论文称正则表达式是:“正则集的代数”的表达式。因此,采用“正则表达式”这个术语。正则表达式的定义存在多种说法,具体如下:

正则表达式就是用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具。

正则表达式描述了一种字符串匹配的模式。它可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

正则表达式是由普通字符(如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

正则表达式就是用于描述某些规则的工具。这些规则经常用于处理字符串中的查找或替换字符串。换句话说,正则表达式就是记录文本规则的代码。

正则表达式就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。
  学过《编译原理》的读者可能知道不确定有限自动机(Non-deterministic finite automaton,简称NFA)和确定有限自动机(Deterministic finite automaton,简称DFA)。其实,正则表达式是一个不确定有限自动机。NFA和DFA的最大区别在于它们的状态转换函数。NFA可以对同一个字符串产生多种理解方式,而DFA则只有唯一的一种理解方式。也正因为如此,NFA在匹配过程中可能会回溯,NFA的效率一般要低于DFA。因此,在书写正则表达式时尽量减少回溯来提高正则表达式的效率。

如果你使用过Windows或DOS下用于文件查找的通配符*和?,那么你不难理解正则表达式。如果你需要查找所有Word文档,那么可能使用表达式*.doc。其中,字符*是一个通配符,它可以代表任意字符串。正则表达式和通配符具有相似性,它也可以使用一些字符(如字符.)表示任意字符。然而,它比通配符更具有精确性。
  在正则表达式中,匹配是最常用的一个词语,它描述了正则表达式动作结果。给定一段文本或字符串,使用正则表达式从文本或字符串中查找出符合正则表达式的字符串。有可能文本或字符存在不止一个部分满足给定的正则表达式,这时每一个这样的部分被称为一个匹配。其中,匹配存在下面3种类型:
形容词性的匹配,即一个字符串匹配一个正则表达式。

动词性的匹配,即在文本或字符串里匹配正则表达式。

名词性的匹配,即字符串中满足给定的正则表达式的一部分。

  正则表达式的应用非常广泛,特别是在字符串处理方面。目前来说,正则表达式已经在很多软件中得到广泛了应用,如Linux、Unix、HP等操作系统,C#、PHP、Java等程序开发环境,以及很多的应用软件中,都可以看到正则表达式的这样或那样的应用。正则表达式常见的应用如下:

验证字符串,即验证给定的字符串或子字符串是否符合指定特征,譬如验证是否是合法的邮件地址、验证是否为合法的HTTP地址等。

查找字符串,从给定的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
替换字符串,即把给定的字符串中的符合指定特征的子字符串替换为其他字符串,比普通的替换更强大。
提取字符串,即从给定的字符串中提取符合指定特征的子字符串。

相关文章

  • 能说明一下GETROWS的用法吗?

    能说明一下GETROWS的用法吗?

    能说明一下GETROWS的用法吗?...
    2006-06-06
  • linux 正则表达式深度解析

    linux 正则表达式深度解析

    大体来讲,正则表达式的文法分为3种标准:BRE、ERE 和 ARE。其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展
    2013-11-11
  • javascript常用正则表达式合集

    javascript常用正则表达式合集

    常用的正则验证代码,非常的全面,但因为是针对以前的版本,例如手机等,学习正则与使用正则验证表单的朋友绝对值得参考。
    2010-08-08
  • 正则表达式直接在EXCEL中使用的详细步骤

    正则表达式直接在EXCEL中使用的详细步骤

    这篇文章主要介绍了正则表达式直接在EXCEL中使用的详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 教你轻松记住JS正则表达式

    教你轻松记住JS正则表达式

    有没有人像小编一样,学了好几遍正则表达式却还是很懵圈,学的时候老明白了,学完了忘光了。好吧,其实还是练的不够,今天就随我来复习一下这傲娇的正则表达式吧。
    2016-07-07
  • javascript正则表达式简介

    javascript正则表达式简介

    正则表达式就是一个用来描述字符模式的对象。它被用来在文本中执行模式匹配(pattern-matching)以及”查找-替换”(search-and-replace)的任务。javascript中正则的风格类似Perl中正则的风格。
    2015-05-05
  • 最新密码验证正则表达式

    最新密码验证正则表达式

    这篇文章主要为大家分享了最新密码验证正则表达式,密码形式可以根据开发需求进行设定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 利用正则表达式(只录入中文,数字,英文)

    利用正则表达式(只录入中文,数字,英文)

    利用正则表达式(只录入中文,数字,英文)限制的代码,好多情况下都需要。
    2009-08-08
  • 正则表达式匹配 非XXX的行

    正则表达式匹配 非XXX的行

    问题:如何匹配"非:.+123.123.123.10.+ " 行
    2008-07-07
  • grep正则表达式匹配中括号的方法实例

    grep正则表达式匹配中括号的方法实例

    正则中的括号有不同的意义,不同的字符在括号中也有不同的意义,下面这篇文章主要给大家介绍了关于grep正则表达式匹配中括号的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论