正则表达式中的符号和preg_match()
. 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线或汉字 s 匹配任意的空白符 d 匹配数字 b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 [u4e00-u9fa5]{2,20} 匹配2-20个汉字 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 W 匹配任意不是字母,数字,下划线,汉字的字符 S 匹配任意不是空白符的字符 D 匹配任意非数字的字符 B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 零宽断言 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注释 (?#comment) 这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 preg_match : 执行一个正则表达式匹配 说明
int
preg_match(
string
$pattern ,string$subject [,array&$matches [,int$flags = 0[,monospace; font-style:italic">$offset= 0]]] )
搜索
Report a bug
参数
返回值
preg_match()返回
更新日志
范例
Example #1 查找文本字符串"php" <?php
Example #2 查找单词"word"
<?php
/*模式中的b标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配 *单词的部分内容比如"webbing"或"cobweb"*/ if(preg_match("/bwebb/i","PHPisthewebscriptinglanguageofchoice.")){ echo"Amatchwasfound."; }else{ echo"Amatchwasnotfound."; } if(preg_match("/bwebb/i","PHPisthewebsitescriptinglanguageofchoice.")){ echo"Amatchwasfound."; }else{ echo"Amatchwasnotfound."; } ?> Example #3 获取URL中的域名
<?php
//从URL中获取主机名称 preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html",$matches); $host=$matches[1]; //获取主机名称的后面两部分 preg_match('/[^.]+.[^.]+$/',$host,$matches); echo"domainnameis:{$matches[0]}n"; ?> 以上例程会输出: domain name is: php.net Example #4 使用命名子组
<?php
$str='foobar:2008'; preg_match('/(?P<name>w+):(?P<digit>d+)/',$str,$matches); /*下面例子在php5.2.2(pcre7.0)或更新版本下工作,然而,为了后向兼容,上面的方式是推荐写法.*/ //preg_match('/(?<name>w+):(?<digit>d+)/',$str,$matches); print_r($matches); ?> Array
(
[0] => foobar: 2008
[name] => foobar
[1] => foobar
[digit] => 2008
[2] => 2008
)
注释
Tip
如果你仅仅想要检查一个字符串是否包含另外一个字符串,不要使用preg_match(). 使用strpos()或strstr()替代完成工作会更快.
参见
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |