php正则表达式1、2、3 jdk1.3 正则表达式

regular1.php:

<?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'; //也可以。

php正则表达式1、2、3 jdk1.3 正则表达式
//$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符号来分割

?>

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/90602.html

更多阅读

怎样区别第1、2、3代水床? i5 2代和3代的区别

怎样区别第1、2、3代水床?主要是从水床内胎材质上进行区别,第一代水床内胎是以棉布经橡胶硫化处理后制成的。其优点是原材料成本低,生产设备少,生产工艺简单,缺点是:1.只能用它制“地垄沟”全水结

声明:《php正则表达式1、2、3 jdk1.3 正则表达式》为网友音若蝶分享!如侵犯到您的合法权益请联系我们删除