PHP 正则表达式语法

则表达式简介

在某些应用中,往往有时候需要根据一定的规则来匹配(查找)确认一些字符串,如要求用户输入的 QQ 号码为数字且至少 5 位。用于描述这些规则的工具就是正则表达式。

最简单的匹配

最简单的匹配就是直接给定字符匹配。如用字符 a 去匹配 aabab ,则会匹配出 3 个结果,分别是字符串中的第 1,2 和第 4 个字符。这种匹配是最简单的情况,但往往实际处理中会复杂得多,如下面的 “QQ号码为数字且至少5位” ,其对应的正则表达式为:

^\d{5,}$

该正则表达式就描述需要确定的内容为至少 5 位以上的数字。我们来具体看看该表达式是怎么描述这一规则的:

  1. ^:表示匹配字符串的开始,也即该字符串是独立的开始而不是包含在某个字符串之内
  2. \d:表示匹配数字
  3. {5,}:表示至少匹配5位及以上
  4. $:表示匹配字符串的结束,也即该字符串是独立的结束

现在就很清楚了,该正则表达式综合起来就是匹配 5 位以上的连续数字,且有独立的开始和结束,对于少于 5 位的数字,或者不是以数字开始和结尾的如 a123456b 这样都是无效的。

从该例子可以看出,正则表达式是从左至右描述的。

同样,如果要匹配移动号码的正则表达式为:

^1\d{10}$

提示

由于对正则表达式的匹配结果,在很多情况下都不是那么确定,所以最好下载一些辅助工具用于测试正则表达式的匹配结果。这类工具如 Match Tracer、RegExBuilder 等,以及其他类似的工具也可。

元字符

在上面的例子中,^ 、\d 及 $ 等这些符号,代表了特定的匹配意义,我们称之为元字符,常用的元字符如下:


元字符


说明


.


匹配除换行符意外的任意字符


\w


匹配字母或数字或下划线


\s


匹配任意的空白符


\d


匹配数字


\b


匹配单词的开始或结束


^


匹配字符串的开始


$


匹配字符串的结束


[x]


匹配x字符,如匹配字符串中的 a、b 和 c 字符


\W


\w的反义,即匹配任意非字母,数字,下划线和汉字的字符


\S


\s的反义,即匹配任意非空白符的字符


\D


\d的反义,即匹配任意非数字的字符


\B


\b的反义,即不是单词开头或结束的位置


[^x]


匹配除了 x 意外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符

提示

  1. 当我们要匹配这些元字符的时候,我们需要用到字符转义功能,同样正则表达式里面用 \ 来表示转义,如要匹配 . 符号,则需要用 \. ,否则 . 会被解释成“除换行符外的任意字符”。当然,要匹配 \ ,则需要写成 \\
  2. 连续的数字或字母可以用 – 符号连接起来,如 匹配所有的小写字母,[1-5] 匹配 1 至 5 这 5 个数字
  1. 3.     PHP 正则表达式语法(二)

4. 重复

  1. 正则表达式的威力在于其能够在模式中包含选择和循环,正则表达式用一些重复规则来表达循环匹配。
  2. 常用的重复如下:

重复


说明


*


重复零次或更多次


+


重复 1 次或更多次


?


重复零次或 1 次


{n}


重复 n 次


{n,}


重复 n 次或更多次


{n,m}


重复 n 到 m 次

7. 分枝

  1. 分枝是指制定几个规则,如果满足任意一种规则,则都当作匹配成功。具体来说就是用 | 符号把各种规则分开,且条件从左至右匹配。

9. 提示

10.由于分枝规定,只要匹配成功,就不再对后面的条件加以匹配,所以如果你想匹配有包含关系的内容,请注意规则的顺序。

11.下面是一个使用分枝的例子。

12.美国的邮政编码的规则是 5 个数字或者 5 个数字连上 4 个数字,如 12345 或者 54321-1234 ,如果要匹配所有的邮编,则正确的正则表达式为:

13.\d{5}-\d{4}|\d{5}

14.//错误写法

15.\d{5}|\d{5}-\d{4}

16.下面的错误写法,只能匹配到 5 位数字及 9 位数字的前 5 位数字的情况,而不能匹配 9 位数字的邮编。

  1. 17.    分组

18.在正则表达式中,可以用小括号将一些规则括起来当作分组,分组可以作为一个元字符来看待。

19.分组的例子,验证 IP 地址:

20.(\d{1,3}\.){3}\d{1,3}

21.这是一个简单的且不完善的匹配 IP 地址的正则表达式,因为它除了能匹配正确的 IP 地址外,还能匹配如 322.197.578.888 这种不存在的 IP 地址。

22.当然,用这个表达式简单匹配成功后可以在利用 PHP 的算术比较再加以判断 IP 地址是否正确。而正则表达式中没有提供算术比较功能,如果要完全匹配正确的 IP 地址,则需要改进如下:

23.((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

24. 规则说明

25.该规则关键之处在于确定 IP 地址每一段范围为 0-255 ,然后再重复 4 次即可。在:

26.25[0-5]|2[0-4]\d|[01]?\d\d?

27.中,用分枝首先确定了 250-255 和 200-249 。 [01]?\d\d? 则确定了 0-199 的范围,综合起来就是 0-255 。

  1. 28.    贪婪与懒惰

29.正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容。如 a.*b,用他来匹配 aabab ,它会匹配整个 aabab ,而不会只匹配到 aab 为止,这就是贪婪匹配。

30.与贪婪匹配对应的是,在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。

31.上述例子对应的懒惰匹配规则为:

32.a.*?b

33.如果用该表达式去匹配 aabab ,那么就会得到 aab 和 ab 这样两个匹配结果。

34.常用的懒惰限定符如下:


懒惰限定符


说明


*?


重复任意次,但尽可能少重复


+?


重复 1 次或更多次,但尽可能少重复


??


重复 0 次或 1 次,但尽可能少重复


{n,}


重复 n 次以上,但尽可能少重复


{n,m}


重复 n 到 m 次,但尽可能少重复

  1. 35.    模式修正符

36.模式修正符是标记在整个正则表达式之外的,可以看着是对正则表达式的一些补充说明。

37.常用的模式修正符如下:


模式修正符


说明


i


模式中的字符将同时匹配大小写字母


m


字符串视为多行


s


将字符串视为单行,换行符作为普通字符


x


将模式中的空白忽略


e


preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。


A


强制仅从目标字符串的开头开始匹配


D


模式中的 $ 元字符仅匹配目标字符串的结尾


U


匹配最近的字符串


u


模式字符串被当成 UTF-8

PHP 正则表达式匹配 preg_match 与 preg_match_all 函数

正则表达式在 PHP 中的应用

在 PHP 应用中,正则表达式主要用于:

  • 正则匹配:根据正则表达式匹配相应的内容
  • 正则替换:根据正则表达式匹配内容并替换
  • 正则分割:根据正则表达式分割字符串

在 PHP 中有两类正则表达式函数,一类是 Perl 兼容正则表达式函数,一类是 POSIX 扩展正则表达式函数。二者差别不大,而且推荐使用Perl 兼容正则表达式函数,因此下文都是以 Perl 兼容正则表达式函数为例子说明。

定界符

Perl 兼容模式的正则表达式函数,其正则表达式需要写在定界符中。任何不是字母、数字或反斜线()的字符都可以作为定界符,通常我们使用 / 作为定界符。具体使用见下面的例子。

提示

尽管正则表达式功能非常强大,但如果用普通字符串处理函数能完成的,就尽量不要用正则表达式函数,因为正则表达式效率会低得多。关于普通字符串处理函数,请参见《PHP 字符串处理》。

preg_match()

preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。

语法:

int preg_match( string pattern, string subject [, array matches ] )


参数说明:


参数


说明


pattern


正则表达式


subject


需要匹配检索的对象


matches


可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

例子 1 :

<?php

if(preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)){

print "A match was found:". $matches[0];

} else {

print "A match was not found.";

}

?>

浏览器输出:

A match was found: PHP

在该例子中,由于使用了 i 修正符,因此会不区分大小写去文本中匹配 php 。

提示

preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数。

例子 2 ,从一个 URL 中取得主机域名 :

<?php

// 从 URL 中取得主机名

preg_match("/^(http://)?([^/]+)/i","http://www.5idev.com/index.html", $matches);

$host = $matches[2];

// 从主机名中取得后面两段

preg_match("/[^./]+.[^./]+$/", $host, $matches);

echo "域名为:{$matches[0]}";

?>

浏览器输出:

域名为:5idev.com

preg_match_all()

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

语法:

int preg_match_all( string pattern, string subject, array matches [, int flags ] )


参数说明:


参数


说明


pattern


正则表达式


subject


需要匹配检索的对象


matches


存储匹配结果的数组


flags


可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:

  1. PREG_PATTERN_ORDER:默认,对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推
  2. PREG_SET_ORDER:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推
  3. PREG_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量

下面的例子演示了将文本中所有 <pre></pre> 标签内的关键字(php)显示为红色。

<?php

$str = "<pre>学习php是一件快乐的事。</pre><pre>所有的phper需要共同努力!</pre>";

$kw = "php";

preg_match_all(‘/<pre>([sS]*?)</pre>/‘,$str,$mat);

for($i=0;$i<count($mat[0]);$i++){

$mat[0][$i] = $mat[1][$i];

$mat[0][$i] = str_replace($kw, ‘<span style="color:#ff0000">‘.$kw.‘</span>‘, $mat[0][$i]);

$str = str_replace($mat[1][$i], $mat[0][$i], $str);

}

echo $str;

?>

正则匹配中文汉字

正则匹配中文汉字根据页面编码不同而略有区别:

  • GBK/GB2312编码:[x80-xff>]+ 或 [xa1-xff]+
  • UTF-8编码:[x{4e00}-x{9fa5}]+/u

例子:

<?php

$str = "学习php是一件快乐的事。";

preg_match_all("/[x80-xff]+/", $str, $match);

//UTF-8 使用:

//preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match);

print_r($match);

?>

输出:

Array

(

[0] => Array

(

[0] => 学习

[1] => 是一件快乐的事。

)

)

PHP 正则表达式替换 preg_replace 函数

正则替换

preg_replace() 函数用于正则表达式的搜索和替换。

语法:

mixed preg_replace( mixed pattern, mixed replacement, mixed subject [, int limit ] )


参数说明:


参数


说明


pattern


正则表达式


replacement


替换的内容


subject


需要匹配替换的对象


limit


可选,指定替换的个数,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换

补充说明

  1. replacement 可以包含 \\n 形式或 $n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 \\0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。
  2. 对替换模式在一个逆向引用后面紧接着一个数字时(如 \\11),不能使用 \\ 符号来表示逆向引用。因为这样将会使 preg_replace() 搞不清楚是想要一个 \\1 的逆向引用后面跟着一个数字 1 还是一个 \\11 的逆向引用。解决方法是使用 \${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。
  3. 上述参数除 limit 外都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理,这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 函数对数组进行排序。

例子 1 :

<?php

$str = "The quick brown fox jumped over the lazy dog.";

$str = preg_replace(‘/\s/‘,‘-‘,$str);

echo $str;

?>

输出结果为:

The-quick-brown-fox-jumped-over-the-lazy-dog.

例子 2 ,使用数组:

<?php

$str = "The quick brown fox jumped over the lazy dog.";

$patterns[0] = "/quick/";

$patterns[1] = "/brown/";

$patterns[2] = "/fox/";

$replacements[2] = "bear";

$replacements[1] = "black";

$replacements[0] = "slow";

print preg_replace($patterns, $replacements, $str);

/*输出:

The bear black slow jumped over the lazy dog.

*/

ksort($replacements);

print preg_replace($patterns, $replacements, $str);

/*输出:

The slow black bear jumped over the lazy dog.

*/

?>

例子 3 ,使用逆向引用:

<?php

$str = ‘<a href="http://www.5idev.com/">5idev</a>其他字符<a href="http://www.sohu.com/">sohu</a>‘;

$pattern = "/<a\s([\s\S]*?)>([\s\S]*?)<\/a>/i";

print preg_replace($pattern, ‘\\2‘, $str);

?>

输出结果为:

5idev其他字符sohu

该例子演示了将文本中所有的 <a></a> 标签去掉。

PHP 正则表达式分割 preg_split 与 split 函数

preg_split()

preg_ split() 函数用于正则表达式分割字符串。

语法:

array preg_split( string pattern, string subject [, int limit [, int flags]] )

返回一个数组,包含 subject 中沿着与 pattern 匹配的边界所分割的子串。


参数说明:


参数


说明


pattern


正则表达式


subject


需要匹配分割的对象


limit


可选,如果指定了 limit ,则最多返回 limit 个子串,如果 limit 是 -1,则意味着没有限制,可以用来继续指定可选参数 flags


flags


设定 limit 为 -1 后可选,可以是下列标记的任意组合(用按位或运算符 | 组合):

  1. PREG_SPLIT_NO_EMPTY:preg_split() 只返回非空的成分
  2. PREG_SPLIT_DELIM_CAPTURE:定界符模式中的括号表达式也会被捕获并返回
  3. PREG_SPLIT_OFFSET_CAPTURE:对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。

例子 1 :

<?php

$str = "php mysql,apache ajax";

$keywords = preg_split("/[\s,]+/", $str);

print_r($keywords);

?>

输出结果为:

Array

(

[0] => php

[1] => mysql

[2] => apache

[3] => ajax

)

例子 2 :

<?php

$str = ‘string‘;

$chars = preg_split(‘//‘, $str, -1, PREG_SPLIT_NO_EMPTY);

print_r($chars);

?>

输出结果为:

(

[0] => s

[1] => t

[2] => r

[3] => i

[4] => n

[5] => g

)

例子 3 :

<?php

$str = "php mysql,apache ajax";

$keywords = preg_split("/[\s,]+/", $str, -1, PREG_SPLIT_OFFSET_CAPTURE);

print_r($keywords);

?>

输出结果为:

Array

(

[0] => Array

(

[0] => php

[1] => 0

)

[1] => Array

(

[0] => mysql

[1] => 4

)

[2] => Array

(

[0] => apache

[1] => 10

)

[3] => Array

(

[0] => ajax

[1] => 17

)

)

split()

split() 函数同 preg_split() 类似,用正则表达式将字符串分割到数组中,返回一个数组,但推荐使用 preg_split() 。

语法:

array split( string pattern, string string [, int limit] )

如果设定了 limit ,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则返回 FALSE。

例子:

<?php

$date = "2008-08-08 20:00:01";

print_r( split(‘[- :]‘, $date) );

?>

输出结果:

Array

(

[0] => 2008

[1] => 08

[2] => 08

[3] => 20

[4] => 00

[5] => 01

)

提示

  1. 如果不需要正则表达式的功能,可以选择使用更快(也更简单)的替代函数如 explode()str_split()
  2. split() 函数对大小写敏感,如果在匹配字母字符时忽略大小写的区别,请使用用法相同的 spliti() 函数

PHP 常用正则表达式整理

本文整理了常用的正则表达式以供参考,尽管以下正则表达式已经一一经过验证,但难免有所纰漏,大家在使用时还需要仔细验证。

表单验证匹配

验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$

验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z A-Z]$

验证账号,不能有空格,不能非数字:^\d+$

验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]\w{5,17}$

验证是否含有 ^%&‘,;=?$\ 等字符:[^%&‘,;=?$\x22]+

匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配腾讯QQ号:[1-9][0-9]{4,}

匹配日期,只能是 2004-10-22 格式:^\d{4}\-\d{1,2}-\d{1,2}$

匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$
评注:匹配形式如 010-12345678 或
0571-12345678 或 0831-1234567

匹配中国邮政编码:^[1-9]\d{5}(?!\d)$

匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})
评注:中国的身份证为 15 位或 18 位

不能为空且二十字节以上:^[\s|\S]{20,}$

字符匹配

匹配由 26 个英文字母组成的字符串:^[A-Za-z]+$

匹配由 26 个大写英文字母组成的字符串:^[A-Z]+$

匹配由 26 个小写英文字母组成的字符串:^[a-z]+$

匹配由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$

匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$

匹配空行:\n[\s| ]*\r

匹配任何内容:[\s\S]*

匹配中文字符:[\x80-\xff]+ 或者 [\xa1-\xff]+

只能输入汉字:^[\x80-\xff],{0,}$

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配数字

只能输入数字:^[0-9]*$

只能输入n位的数字:^\d{n}$

只能输入至少n位数字:^\d{n,}$

只能输入m-n位的数字:^\d{m,n}$

匹配正整数:^[1-9]\d*$

匹配负整数:^-[1-9]\d*$

匹配整数:^-?[1-9]\d*$

匹配非负整数(正整数 + 0):^[1-9]\d*|0$

匹配非正整数(负整数 + 0):^-[1-9]\d*|0$

匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$

匹配负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$

匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

匹配非负浮点数(正浮点数 + 0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

匹配非正浮点数(负浮点数 + 0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

其他

匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*? />

匹配网址 URL :[a-zA-z]+://[^\s]*

匹配 IP 地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

提示

    1. 上述正则表达式通常都加了 ^ 与 $ 来限定字符的起始和结束,如果需要匹配的内容包括在字符串当中,可能需要考虑去掉 ^ 和 $ 限定符。
    2. 以上正则表达式仅供参考,使用时请检验后再使用
时间: 2024-11-10 23:48:26

PHP 正则表达式语法的相关文章

正则表达式语法

正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符").模式描述在搜索文本时要匹配的一个或多个字符串. 正则表达式示例 表达式 匹配 /^\s*$/ 匹配空行. /\d{2}-\d{5}/ 验证由两位数字.一个连字符再加 5 位数字组成的 ID 号. /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记. 下表包含了元字符的完整列表以及它们在正则表达式上下文中的

JAVA正则表达式语法大全

[正则表达式]文本框输入内容控制整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数字:"^\d{n,}$".只能输入m~n位的数字:."^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$".只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})

正则表达式语法学习

正则表达式用到的地方很多很广,一般用于验证 此文讲解了正则表达式的语法,以下内容转自网友[丰衣足食]的帖子 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 后向引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配

正则表达式语法与正则表达式在iOS中的常见用法

一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式达到字符串的复杂控制. 二.正则表达式的语法 看一个过滤纯数字的例子 - (BOOL)validateNumber:(NSString *) textString { NSString* number=@"^[0-9]+$"; NSPredicate *numberPre = [NSPre

java 正则表达式语法

java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报  分类: javaSe(16)  目录(?)[+] 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告… 一些我认为你可能

正则表达式 - 语法

正则表达式 - 语法 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 构造正则表达式的方法和创建数学表达式的方法一样.也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式.正则表达式的组件可以是单个的字符.字符集合.字符范围.字符间

Delphi 正则表达式语法(1): 关于大小写与中文

Delphi 正则表达式语法(1): 关于大小写与中文 //替换一般字符串 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '我爱DELPHI, 但Delphi不爱我!';   reg.RegEx  := 'Delphi';   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: 我爱DE

Delphi 正则表达式语法(3): 匹配范围

Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007 for Win32';   reg.RegEx  := '[A-Z]';   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subject

java正则表达式语法详解及其使用代码实例

原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位.现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了. Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基

Delphi 正则表达式语法(5): 边界

Delphi 正则表达式语法(5): 边界 // \b 单词边界 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';   reg.RegEx  := '\bDelphi\b'; //前后边界   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subject);