字符串在计算机中是应用最为广泛的处理对象(帐号,html 网页,URL...),字符串的组合形式非常多样。如:数字字符串:由任意多个 0~9 的字符组成,email 地址字符串 IP 地址字符串,URL 字符串,这些字符串都是我们程序设计的时候需要处理的对象,现在的问题是:计算机要处理这些字符串对象,首先要使用一种语言(表达式,数据类型...)去描述这些要处理的字符串的规则,能够使用一种通用的规则来描述/表达我要处理的字符串,正则表达式(专门用来描述字符串规则的一种语言)就是用来干这个的。
它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式通常被用来查找和替换那些符合某个"规则"(模式)的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式本身是一个字符串,只不过这个字符串是用来描述某一种“规则字符串”的表达式,脱离了具体语言的一些规则(使用一些符号来描述一些常见的规则),但是现在大多数程序设计语言都实现或者支持正则表达式。可以使用一些“规则”去描述一些特定的字符串。
正则表达式规则
正则表达式中的字符分为两种:
普通字符
和
元字符
普通字符:
没有特殊含义,只表示字符本身的意思
元字符
:有特殊含义的字符(不代表本身的含义),如果要让他代表本身,加上转义字符'\'
正则表达式中的元字符:
. : 用来匹配任意单个字符
,比如‘a.c’可以表示‘a 任意字符 c’。比如
[] :表示一个字符模式,虽然有多个字符组成,但是它任然只匹配一个字符,而且字符串能够
匹配的单个字符,都列举在[]内
,例如[123456]表示只匹配 123456 其中一个字符串,在[]内也有两个元字符
① - :-可以表示 ASCII 码连续的多个字符,例如[1-9]表示匹配一个 0 到 9 的字符,[a-z]表示匹配小写字母
② ^ : ^表示排除字符,匹配单个字符,匹配除了[]里面列举的以外的单个字符
,例如[^12345],表示排除 12345,[^0-9]表示排除数字。
还有用来匹配多个模式的元字符:
+ :用来匹配一个或多个先前字符或模式
,例如:
09+可以等同于 09,099,0999,…,[0-9]+可以等同于[0-9],[0-9][0-9],[0-9][0-9][0-9],…
* : 用来匹配零个或多个先前字符或模式
,例如:
09*可以等同于 0,09,099,…,[0-9]*可以等同于空字符串,[0-9],[0-9][0-9],…
? : 用来匹配零个或 1 个先前字符或模式
,例如:
09*可以等同于 0,09,[0-9]*可以等同于空字符串,[0-9]
{} : 用来匹配固定数量的先前字符或模式
,例如有以下几种:
{数字 n} :用来匹配数量为 n 的先前字符或模式,例如 [0-9]{3}等同于[0-9][0-9][0-9]
{数字 n,数字 m} :用来匹配最小数量 n 最大数量 m 的先前字符或模式,例如
[0-9]{1,3}等同于[0-9],[0-9][0-9],[0-9][0-9][0-9]
{数字 n,} :用来匹配最小数量 n 的先前字符或模式,例如
[0-9]{1,}等同于[0-9],[0-9][0-9],[0-9][0-9][0-9],…
还有用来组合各种模式的元字符
().把括号内的东西当成一个整体,形成子模式。
例如 123 是三个模式组合而成,分别是 1,2,3,那么(123)就是一个模式了,表示 123 这一串
格式,又例如:123*表示 12,123,1233,12333,…,而(123)*表示空,123,123123,
123123123,…。在()内也有对应的元字符:
| .用来组合模式,表示子模式选择
,例如:(123|abc)可以表示的是 123123,
123abc,abc123,abcabc。