wxmg
论坛版主
论坛版主
  • UID5
  • 粉丝2
  • 关注0
  • 发帖数19
  • 社区居民
阅读:1807回复:1

正则学习4-5课时笔记(php篇)

楼主#
更多 发布于:2015-12-14 09:31
/***************Lesson4**********************/
echo "<h1>Lesson4</h1>";
echo "<hr>";
/*
**  1. \s代表空格,^代表一行的开头,$代表一行的结尾
**  2. .代表除了\r\n之外的所有字符
*/
//取出@用户名
$str="@xinsuonline 你好";
$pattern="/@\w+\s/u";
 
//以分号为结束标志,如果字符串在分号后面还有别的字符则匹配不成功
//$str="echo \$a;";
$str="echo \$a;vvv";
$pattern="/.+;$/";
 
//模拟微博,以@为开始,以空格为结束,代表@了某用户
$str="@xinsuonline ";
$pattern="/^@.+\s$/";
 
preg_match_all($pattern,$str,$result);
foreach($result[0] as $value){
    echo $value,"</br>";
}
 
/******************Lesson5****************/
echo "<h1>Lesson5</h1>";
echo "<hr>";
/*
**  1. 正则精髓之小括号(分组)
*/
//取出 用户名
 $str="@xinsuonline 你好";
 $pattern="/@(\w+\s)/u";
preg_match_all($pattern,$str,$result);
var_export($result);
//返回结果:array ( 0 => array ( 0 => '@xinsuonline ', ), 1 => array ( 0 => 'xinsuonline ', ), ),先匹配再分组
 
//如果@了两个用户呢
$str="@xinsuonline 你好 @hhh 你好2";
$pattern="/@(\w+\s)/u";
preg_match_all($pattern,$str,$result);
var_export($result);
//返回结果:array ( 0 => array ( 0 => '@xinsuonline ', 1 => '@hhh ', ), 1 => array ( 0 => 'xinsuonline ', 1 => 'hhh ', ), )
//可以看出 匹配的字符串放在了result[0],小括号里面的内容放在了result[1]里了
 
//试着加上?<first>
$str="@xinsuonline 你好 @hhh 你好2";
$pattern="/@(?<first>\w+\s)/u";
preg_match_all($pattern,$str,$result);
var_export($result);
//返回结果array ( 0 => array ( 0 => '@xinsuonline ', 1 => '@hhh ', ), 'first' => array ( 0 => 'xinsuonline ', 1 => 'hhh ', ), 1 => array ( 0 => 'xinsuonline ', 1 => 'hhh ', ), )
//小括号里面的内容除了在result[1]里,还有在result["first"]里,所以可以这样:
foreach($result["first"] as $value){
    echo $value,"</br>";
}

最新喜欢:

ZerduoZerduo
v2ex_com
校友
校友
  • UID186
  • 粉丝1
  • 关注7
  • 发帖数47
  • 社区居民
  • 忠实会员
沙发#
发布于:2016-01-14 22:36
正则第五讲有奖问答答案:
function strMatch(str){
        var pattern = /@\w+\s/g;
        var strlen = str.length;
        var last = strlen - str.lastIndexOf('@');
        while(pattern.lastIndex + last < strlen){
            console.log(pattern.exec(str));
        }
    }
这个str里的字符串只能放英文的,要是要放中文的该怎么做?
游客

返回顶部