php正则表达式学习

<?php


//在php中使用正则表达式
// $str = "HBabcd HBx";
// echo ereg('HB[a-zA-Z]',$str);//返回的结果是1
//posix 正则表达式用的是[],特殊字符如下所示:
//今天来讲讲POSIX表达式,下面是我列出的几个重要知识点。


// (1)定界符"^"和"$"分别表示开始和结束。注意,"^"一旦用上[]表示取非的匹配。


// (2)POSIX量词的应用,有*、+、?、{n}和{n,}以及{n,m}


// (3)方括号表达式[]如^[a-z][0-9]$能够匹配t6等


// (4)预定义字符簇,如[[:alpha:]]表示大小写字母


// (5)ereg_replace()和split()等的应用
/*
<b>(.*)</b>返回<b></b>之间被匹配的字符,.表示任意一个字符  ^.*{2}$ 匹配任何只包含两个字符的字符串
[^a-z]不是小写字符开头的字符串
^放在【】里面是取非的意思,反斜线代表转义的意思
ereg(); 
*/
// echo "<br/>";
// echo ereg(".{3}", "chengyang",$var);
// echo $var[0];  //3che,而且返回成功了,但是书上说是不对的.
// echo "<br/>";
//  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."; 
//    } 
// //php匹配字符串中的空格
// $str = "1 掌握java 2 掌握ssh 3 熟练使用mysql,sql,和oracle数据库中的一种";
// $match = split('[0-9][[:space:]]',$str);  //匹配空格的时候,[:space:]表示的是一个范围,类似于0-9,所以要在外面再加一个[]
// print_r($match);
// echo "<br/>"
//之前的原因是1 2 3 的输入方式为中文输入,所以不对,好囧rz
/*有些Posix-标准预定义类
有些我们可以作为正则表达式部分些Posix-标准预定义类包括[:alnum:], [:digit:], [:lower:]等等...如下:


[:alnum:] 数字字符         [:alpha:]字母字符      [:blank:]空格与定位字符 [:cntrl:]控制字符
[:digit:]    数字字符          [:graph:]非空格字符 [:lower:]小写字母字符      [:print:]可显示的字符
[:punct:] 标点符号字符 [:space:]空白字符     [:upper:]大些字母字符     [:xdigit:]十六进制数字
*/
//php正则表达匹配身份证号格式15 18位的。$pattern = "/\d{15}"; $pattern = }"/\d{17}(\d|X)";
/*
\d  任意一个数字,0~9 中的任意一个
\D  非\d
\w  任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
\W  非\w
\s  包括空格、制表符、换页符等空白字符的其中任意一个
\S  非\s
. 小数点可以匹配除了换行符(\n)以外的任意一个字符
Perl正则支持3种形式的括号, 小括号(), 中括号[], 大括号{}
括号  用法  实例
()  表示一个子模式段, 多个子模式可以直接拼接成一个模式  正则 "(a)" , 匹配 "abcde", 得到结果a; 正则 "(d12)" , 匹配 "abcde123", 得到结果d12
[]  该括号表示1个字符, 列举的所有字符是"或"的关系 正则 "[ab]" , 匹配 "abcde", 得到2个结果a和b; 正则 "[d12]" , 匹配 "abcde123", 得到3个结果, d,1和2
{}  表示一个模式表达式的重复次数  {2}重复两次, {1,}至少一次, {,9}最多9次.{}可以直接修饰字符, 如a{1,3}将匹配aaa, 或者修饰子模式, 如(ab){1,}将匹配ab或abab或ababab..., 或者修饰可选字符集, 如[ab]{2}将匹配aa,bb,ab,ba


/ab/i;忽略大小写
php中的特殊字符:! $ ^ * () = + {} [] \ | : < > 
// */
// ereg(pattern, string);
// eregi(pattern, string);
// preg_match(pattern, subject);
// preg_match_all(pattern, subject, matches); //如果用第四个参数,preg_pattern_order:matches[0]是模式完全匹配的所有字符串数组,matches[1]是第一个括号里匹配的,matches[2]是第二个括号里匹配的
// $s = "<div id ='div_123' onmouseover = 'showinfo(1234)'>xxxxxx</div>";
// if( preg_match('/showinfo\((\d+)\)/', $s,$reg)){
// echo $reg[0];
// echo $reg[1]; //表示的是所有匹配的模式,其实模式2为(\d+1);
// }
// (.*?)表示所有的字符.
//php正则表达式替换的问题
//ereg_replace(pattern, replacement, string);
// $string1 = "This is a test";
// echo ereg_replace("()is", "\1first", $string1);
// echo "\n";这里和书上的不一样,我也不知道哪个是对的了...
//echo ereg_replace("()is", "\2second", $string1);


// 分离数据
// split(pattern, string);
// spliti(pattern, string);
//preg_split(pattern, subject);基于perl 风格;
//$str = "1.张三 2.王五 3.李四";
//$match= split("[0-9].",$str); //为什么写成[:digit:]就不对了...吓尿了


//print_r($m);
//preg_quote(str);如果不会写正则表达式........


?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值