正则表达式学习一(基础)

这几天遇到了用到正则的地方,以前很怕正则~~~~(>_<)~~~~ 今上午终于把它给弄出个所以然来了~\(≧▽≦)/~啦啦啦

这可是哥亲自手打出来的……

一、普通字符、元字符组成的正则表达式

1.cc是一个或多个普通字符例如,”b”匹配字符串b,”abc”匹配字符串”abc”

<?php

$pattern="/abc/";

$mystring="dadbccabcdefg";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abc

?>

2.{n} n表示匹配确定的n次。例如,o{2}必须两个连续的o,不能匹配bob中的o,而能匹配google中的o

<?php

$pattern="/abc{2}/";

$mystring="dabccabcdefg";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abcc

?>

3.{n,}同上一个,不过这里是至少匹配n

<?php

$pattern="/abc{2}/";

$mystring="dabccabcdefg";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abccc

?>

4.{n,m}同上,至少匹配n次,最多m

<?php

$pattern="/abc{2,4}/";

$mystring="dabcccccabcdefg";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abcccc

?>

5.\转义字符

6.^匹配输入字符串的开始位置。例如,^a不匹配ana中的最后一个a,匹配第一个a

^ab不能匹配bab如果设置了模式修正符为m,也匹配换行符和回车符之后的位置(\n\r

<?php

$pattern="/^abc/";

$mystring="abcdda";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abc

?>

7.$同上但匹配的是结束位置

<?php

$pattern="/abc$/";

$mystring="abcdabc";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//abc匹配的是最后一个abc

?>

8.*等价于{0,}即匹配前面的字符或子表达式0次或多次例如zo*能匹配z以及zoo(着这里匹配子表达式是:o,而不是zo,只要匹配z就可以了,o零次都可以)

<?php

$pattern="/abc*/";

$mystring="ab";

preg_match($pattern,$mystring,$result);

print_r($result);

echo$result[0];//ab

?>

9.+同上。等价于{1,}即匹配前面的字符或子表达式0次或多次例如zo+能匹配zo以及zoo但不匹配z

10.?等价于{0,1},当该字符跟在任何一个其他限制符(*+?{n}{n,},{n,m}后面时,匹配模式是“非贪心”的。“非贪心”搜索到的尽可能短的字符串,而默认贪心则尽可能长,例如,”oooo”中,”o+?”只能匹配单个oo+匹配所有的o*+?都称为贪心的。

11..匹配除”\n”之外的任何单个字符。若要匹配\n在内的任意字符,请使用诸如[\s\S]之类的模式

12.x|y匹配xy例如z|flood匹配zflood

13.[xyz]字符集合匹配所包含的任何一个字符,例如[abc]匹配plain中的a,也可以匹配bea中的b

14.[^xyz]匹配未包含的任意字符。例如,[^abc]可以匹配plainp

15.[a-z]字符范围,匹配指定范围的任意字符[a-z][0-9][A-Z],例如^[A-Za-z0-9]表示由数字和26个英文字母组成的字符串

16.[^a-z]匹配任何不在指定范围内的任意字符。

二、正则表达式转义语法

1.\b匹配一个单词该单词必须位于边界,也就是指单词边必须有空格。例如”er\b”可以匹配never中的er(这时er位于边界)但不能匹配verb中的er(这时er没有位于边界)

2.\B与上一个相反,”er\B”能匹配verb中的er但不能匹配never中的

3.cx匹配由x指定的ASCII控制字符。例如,\cC匹配Ctrl+C,\cM匹配一个Ctrl+M(一个换行符),x的值必须位于a-zA-Z中否则将c视为一个原义的c字符本身

<?php

$pattern="/d\cM/";

$mystring="d

sdf";

preg_match_all($pattern,$mystring,$result);

print_r($result);//Array ( [0] => Array ( [0] => d) )

echo$result[0];

?>

4.\d等价于[0-9] ,\D等价于[^0-9]

5.\f匹配一个换页符等价于\x0ccL;\n匹配一个换行符等价于\x0a\cJ;\r匹配一个回车符,等价于\x0d\cM;\s匹配任何单个空白字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]

$pattern="/\s[A-Za-z0-9]/";

$mystring="foobar";

preg_match_all($pattern,$mystring,$result);

print_r($result);//Array ([0] => Array ( [0] => b ) )

\S匹配任何单个字符,但不包含空白字符

<?php

$pattern="/\S[A-Za-z0-9]/";

$mystring="foobar";

preg_match_all($pattern,$mystring,$result);

print_r($result);//Array ( [0] => Array ( [0] => fo [1] => ba ) )

?>

\t匹配一个制表符\w等价于[A-Za-z0-9_]多一个下划线\W如匹配50%中的%

三、正则表达式的捕获语法

(pattern)匹配pattern并捕获该匹配的字表达式

(?:pattern)不捕获匹配结果,这在使用或字符(|)来组合一个模式的各个部分是很有用的,例如industr(?:y|ies)就是一个比industry|industries更简略的表达式

(?=pattern)(?!pattern)

圆括号包围的表达式被称为字表达式也称为捕获语法,他们将被存储起来用作他用

四、优先权顺序

\转义符()(?:)(?!)[]圆括号和方括号*+?{n}{n,}{n,m}限定符

^$\任何元字符位置和顺序

|或运算

五、常用函数

preg_match()preg_match_all()preg_replace()preg_split()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值