php正则表达式1、2、3 jdk1.3 正则表达式
<?php
//尝试着写第一个正则表达式
//第一个参数,表示模式,表示匹配模式(就是和字符串去比较、匹配)
//第二个参数,表示字符串
//如果整个函数模式和字符串比较后匹配了,那么返回真(true)1,否则返回假(false)0
//什么叫匹配,就是一个一个的比较过去
//按照什么规则??按照模式来匹配
//只要模式全部通过,那么就通过
//匹配和相等是两个概念
//因为目前的模式是一个整体,php
//所以,字符串只要有连在一起的php三个字符,不管怎样的字符串都能匹配
$mode = '/php/'; //规则模式
$string = 'sdlkfjwehsdlfkjpsdlfkjshersidjflkspdf'; //字符串
if (preg_match($mode,$string)) {
echo '匹配';
} else {
echo '不匹配';
}
// if ('a'=='b') {
// echo '相等';
// } else {
// echo '不等';
// }
//什么叫前导,前面的一个字符
//+号的前导字符就是h
//h+的意思是,至少包含一个h
//+号的意思,是前导字符,一个或者多个
//h*的意思是,零个或者多个h
//*号虽然可以是零个,但是前导字符不能更改,更改了,就不匹配了
//h?的意思是,零个或者一个h
//?多个前导字符不行
//.的意思是,任意一个字符,所以,两个点,就是任意两个字符
//.*表示前导任意字符,并且零个或者多个
//p{3}表示,前导必须是3个
//p{3,5}表示,前导必须是3-5个
//p{3,}表示,前导至少3个p
//$符号,一般加在模式的字符串尾巴上
//表示从尾巴开始匹配
//^表示,从开头进行匹配
//^和$一起用的,基本上不要用正则了,直接用==号即可
//|是一个条件选择符,如果有其中一个,即可匹配。
$mode = '/(This) (is) (a) (Teacher)/'; //规则模式
$string = 'This is a Teacher'; //字符串
if (preg_match($mode,$string)) {
echo '匹配';
} else {
echo '不匹配';
}
?>
regular2.php:
<?php
/**
* 正则表达式中的元字符:
* [a-z] 匹配任何包含小写字母a-z的字符串.如果第一个匹配成功,则后面的就不进行匹配。结果为成功。
* [A-Z] 匹配任何包含大写字母a-z的字符串
* [0-9] 匹配任何包含数字0-9的字符串
* [abc] 匹配任何包含小写字母a、b、c的字符串
* [^abc] 匹配任何不包含小写字母a、b、c的字符串
* [a-zA-Z0-9_] 匹配任何包含a-zA-Z0-9和下划线的字符串
* w 匹配任何包含a-zA-Z0-9和下划线的字符串
* W 匹配任何没有下划线和字母数字的字符串
* d 匹配任何数字字符,与[0-9]相同
* D 匹配任何非数字字符,与[^0-9]相同
* s 匹配任何空白字符
* S 匹配任何非空白字符
* b 匹配是否到达了单词边界。(代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。)
* B 匹配是否没有到达单词边界
* 匹配正则中的特殊字符
*/
// [a-z] 表示将待比较的字符串逐个与模式进行匹配,只要有一个能匹配到模式中的,结果为成功
$mode = '/[a-z]/';
$string ='0i'; //也可以。先匹配s,如果匹配到,则结果为成功
if ( preg_match($mode, $string)){
echo '[]字母元素匹配成功';
}else{
echo '[]字母元素匹配失败';
}
echo '<br/>';
// [0-9] 表示将待比较的字符串逐个与模式进行匹配,只要有一个能匹配到模式中的,结果为成功
$mode = '/[0-9]/';
$string ='bc1'; //也可以。依次匹配a b 1,如果1匹配到了,则结果为成功
if ( preg_match($mode, $string)){
echo '[]数字元素匹配成功';
}else{
echo '[]数字元素匹配失败';
}
echo '<br/>';
// [abc] 表示将待比较的字符串逐个与模式进行匹配,只要有一个能匹配到模式中的,结果为成功
$mode = '/[abc]/';
$string ='db'; //也可以。依次匹配d b,如果匹配到,则结果为成功
//$string = db' //成功
if ( preg_match($mode, $string)){
echo '[]abc元素匹配成功';
}else{
echo '[]abc元素匹配失败';
}
echo '<br/>';
// d与[0-9]功能相同
$mode = '/d/';
$string ='bc9'; //也可以。依次匹配a b 1,如果1匹配到了,则结果为成功
if ( preg_match($mode, $string)){
echo 'd元素匹配成功';
}else{
echo 'd元素匹配失败';
}
echo '<br/>';
// b表示到达了单词的边界,如果没有到达,就不匹配。如果放在结尾,边界可以理解为结束或空格
//如果b放在最开始,代表单词的开始或空格
$mode = '/bphp/';
$string ='my php is good'; //也可以。
if ( preg_match($mode, $string)){
echo 'b元素匹配成功';
}else{
echo 'b元素匹配失败';
}
echo '<br/>';
// 如果要匹配特殊字符的话,必须在特殊字符前加上进行转义
$mode = '/ph+p/';
$string ='ph+p'; //也可以。
if ( preg_match($mode, $string)){
echo '元素匹配成功';
}else{
echo '元素匹配失败';
}
echo '<br/>';
?>
regular3.php:
<?php
/**
* 正则表达式中的修饰符:一般放在//的外面。
* i 完成不区分大小写的搜索
* m 在匹配首内容或尾内容时采用多行识别匹配
* x 忽略正则中的空白
* A 强制从头开始匹配
* U 禁止贪婪匹配,只跟踪到最近的一个匹配符结束
*/
$mode = '/php/i';
$string ='pHp'; //也可以。
//$string ='pHpadadf'; //也可以。
if ( preg_match($mode, $string)){
echo 'i修饰符匹配成功';
}else{
echo 'i修饰符匹配失败';
}
echo '<br/>';
//m 表示匹配首尾时,遇到换行,也应该承认是结尾。不太常用
$mode = '/php/im';
$string ="this is pHpn is good"; //也可以。
//$string ='pHpadadf'; //也可以。
if ( preg_match($mode, $string)){
echo 'm修饰符匹配成功';
}else{
echo 'm修饰符匹配失败';
}
echo '<br/>';
?>
regular4.php:
<?php
/**
* 函数应用:
* 搜索字符串:preg_grep()函数搜索数组中的所有元素,返回由与某个模式匹配的所有元素组成的数组
* prge_match():函数在字符串中搜索模式,如果存在则返回true,否则返回false
* prge_replace:函数搜索到所有匹配,然后替换成想要的字符串返回出来。功能强大,常用
*
*/
//假设找出结尾为p的三种编程语言
$language = array('php','jsp','asp','python','ruby');
//模式:结尾匹配p
$mode = '/p$/';
//模式:开头为p的模式
//$mode = '/^p/';
print_r (preg_grep($mode, $language));
echo "<br/>";
//电子邮件小案例
$mode = '/([w.]{2,255})@([w]{2,255}).([a-z]{2,4})/';
$string = '13656891089s@139.com';
if (preg_match($mode, $string)){
echo '电子邮件合法';
}else {
echo '电子邮件不合法';
}
echo "<br/>";
//匹配全局正则
//将字符串的所有匹配得到的数组结果,放进第三个变量中
preg_match_all('/php[1-6]/', 'php5adkafphp6kikikdphp4', $out);
print_r ($out);
echo $out[0][0];
echo "<br/>";
//搜索匹配的结果,然后替换掉。第1个对数为正则模式,第2个参数是要被替成的字符串,第3个参数为字符串
echo preg_replace('/php[1-6]/', 'python', 'This is php5,This is php4');
//上句输出结果为: This is python,This is python
echo "<br/>";
//贪婪和分组获取的案例
//在mode中,用几个括号,就表示分几组,那么第一组就是1,第二组就是2,第三组就是3,...
//问题:只匹配到第一个[b]和最后一个[/b],解决此问题需要在mode中加入U参数,来使与最近的配对。
$mode = '/[b](.*)[/b]/U';
$replace ='<strong>1</strong>'; // 1表示引用第一个括号的.*内容
$string ='this is a [b]php5[/b],this is [b]php6[/b]';
echo preg_replace($mode, $replace, $string);
echo "<br/>";
//用正则表达式来分割
print_r(preg_split('/[.@c]/', 'hyc@cmca.org.cn')) ;//表示按.或@或c符号来分割
?>
更多阅读
暖暖环游世界英国区域1、2及支线全S攻略 暖暖环游世界韩国支线
暖暖环游世界英国区域1、2及支线全S攻略——简介这是安卓版的,个人攻略,肯定还有很多别的方法暖暖环游世界英国区域1、2及支线全S攻略——方法/步骤暖暖环游世界英国区域1、2及支线全S攻略 1、198爱丁堡风笛手上衣-欧风上衣·白下
怎样区别第1、2、3代水床? i5 2代和3代的区别
怎样区别第1、2、3代水床?主要是从水床内胎材质上进行区别,第一代水床内胎是以棉布经橡胶硫化处理后制成的。其优点是原材料成本低,生产设备少,生产工艺简单,缺点是:1.只能用它制“地垄沟”全水结
PSP视频下载 PS2《战神1、2》中文剧情视频,PMP ps2战神1中文版下载
[PSP视频下载]PS2《战神1、2》中文剧情视频,PMP格式严重浪漫PS2上的超大作!全中文剧情!PMP格式,下载到你的PSP里观看吧。战神1 PS2主机上一部精彩动作游戏的动画合成视频,这款游戏在今年E3展之所以大为轰动,除了独特的古希腊神话风格之
2015年CCTV-1、2、3、4、7、纪录新春序曲广告招商方案 新春序曲航拍
2015年CCTV-1、2、3、4、7、纪录新春序曲广告招商方案2014年央视春晚32年来首次以《春晚是什么》短片形式揭开晚会序幕,片中来自各行各业的人们阐述了自己对春晚的态度与理解。温情、暖暖的序事风格,引发亿万观众的好评。2015年CCT
湘南医学高等专科学校1#、2#教工宿舍工程竣工验收情况汇报 竣工验收监理汇报材料
湘南医学高等专科学校1#、2#教工宿舍工程竣工验收情况汇报尊敬的各位领导、各位专家:大家好!感谢大家百忙之中抽出宝贵时间来参加湘南医学高等专科学校1#、2#教工宿舍工程的竣工验收会。湘南医专(长沙医学院)1#、2#教工宿舍工程自2003