zoukankan      html  css  js  c++  java
  • PHP正则表达式

    主要内容

    1. 基础
    2. PHP中的正则表达式函数
    3. 常用的正则表达式

    基础

      不用多讲,正则表达式(以下简称正则)是处理字符串的一种工具,它可以帮助你从字符串中提取你想要的内容,也可以用来验证某个字符串是否合法。几乎每种编程语言都提供了对正则的支持。有两种正则表达式的版本:POSIX和PERL,这两种版本在语法和效率上有一些差别。下面我们以PERL版本为例(据说效率比POSIX更高),PHP中提供了以preg_开头的函数来支持PERL版本的正则。

      我把正则表达式的语法分类为元素、元素的个数、容器、逻辑或、特殊字符的转义五个部分。中文课本上那些怪怪的名字让我很反感,这样分让我感觉比较舒服,至少目前是这样。

        元素:正则中的最小单位,可以是一个具体的字符,也可以是代表某一类的特殊字符。

    • a-zA-Z0-9 :纯字符
    • . :任何字符(除了换行符)
    • [] :有时候,你想让一个“位置”,代表某一类字符,就可以用[],里面写上,你可能出现的字符,如:[abc],表示这个“位置”可以是a、b、c中的任何一个。同时也支持范围,如:[a-z]表示a到z中的任何一个字母,复杂点:[a-zA-Z0-9],你懂得。另外如果在括号的开头加上“^”表示匹配除了括号里的字符,如c[^ab]t,将匹配cmt,cot,而不会匹配cat,cbt。

      容器:元素的集合,它本身也是一个元素,专业点叫“复合”。其实,我这里说是中括号“()”,这个在正则里是个神奇的东西,它不仅是一个容器,而且会把容器里的东西记下来,这样后面就可以用到。

      元素的个数:上面说得“元素”符号,只代表一个位置。现在如果让你匹配3个a,你可以把正则写为:“aaa”,那如果是100个a呢,你不会愿意写100个a的。另外,如果想匹配100个数字,怎么办呢?下面的“元素的个数”符号会解决这个问题。

    • * :0个或者多个元素
    • + :1个或者多个元素
    • ? :0个或者1个元素
    • {} :大括号,比上面的覆盖范围更广,比如:{0,}表示0个或者多个(同*);{1,}表示1个或者多个(同+);{0,1}表示0个或者1个(同?);{1,100}表示1到100个。

      逻辑或:符号”|“。不用说你应该明白,它表示的是多个中任选一个。

      特殊字符的转义:在上面做了特殊用途的字符,如果你想匹配这些特殊字符,只需要在前面加上反斜杠(),转移即可。如:$、?。

    参考

    http://www.phpfreaks.com/tutorial/regular-expressions-part1---basic-syntax

    http://weblogtoolscollection.com/regex/regex.php

    http://www.phpf1.com/tutorial/php-regular-expression.html

  • 相关阅读:
    【Java每日一题】20170111
    【Java每日一题】20170110
    【Java每日一题】20170109
    【Java每日一题】20170106
    【Java每日一题】20170105
    【Java每日一题】20170104
    【Java每日一题】20170103
    【Java每日一题】20161230
    【Java每日一题】20161229
    【Java每日一题】20161228
  • 原文地址:https://www.cnblogs.com/smilealgernon/p/3056792.html
Copyright © 2011-2022 走看看