日期:2014-05-17  浏览次数:20551 次

求高难度正则
一段话,如:
@abc falieurisdlfalsjdfj Email: abc@abc.cn alkjdiruasjdflasdfj @abc.uk salkdjfoawuierj @123,lskdufasjidfja

上面这段话中 读取@abc 和 @abc.uk 和@123 而不要取出 abc@abc.cn中的 @abc.cn 就像微博中一样 @符号后面,逗号或者句号前面的内容取出来,但是不要涉及到邮箱中的@后面的东西。




------解决方案--------------------
PHP code
$s = <<< TXT
@abc falieurisdlfalsjdfj Email: abc@abc.cn alkjdiruasjdflasdfj @abc.uk salkdjfoawuierj @123,lskdufasjidfja
TXT;

preg_match_all("/(?:^|\s)(@[\w.]+)/is", $s, $r);

print_r($r[1]);

------解决方案--------------------
田心老师的没有考虑到 abc@abc.cn这种情况。
刚学习正则,来个。

PHP code
<?php
$str = "@abc falieurisdlfalsjdfj Email: abc@abc.cn alkjdiruasjdflasdfj @abc.uk salkdjfoawuierj @123,lskdufasjidfja";
preg_match_all("/(^|\s *)@([\w.]+)/is",$str,$arr);
print_r($arr);