一个正则的问题 /*需求就是dj一个分组%a3%a3 或者%23 是另外一个分组999是一个分组通过$result获取对应的数据。如:*/$result[0]='dj';$result[1]='%a3%a3';$result[2]='999'; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $s = 'dj%a3%a3999';preg_match('/([^%]+)((?:%a3|23)+)(.+)/', $s, $r);print_r($r);Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 ) 使用了这个:$string='dj%a3%a3999';if(preg_match('/^([dj]{2})([%a3]+)(\d{3})$/i', $string,$result)){ print_r($result);}结果:Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 ) 如果$s = 'dj%23999';则不行。 这个串也需要匹配的:$string='dj%23999'; $s = 'dj%23999';preg_match('/([^%]+)((?:%(?:a3|23))+)(.+)/', $s, $r);或preg_match('/([^%]+)((?:%a3|%23)+)(.+)/', $s, $r);正则表达式规则说明中有:| 运算时如果发生歧义,则需要逐个开列或用括号括起来显然 (?:%a3|23) 中 % 被结合到了 a3 从而发生了歧义 老大,能不能帮我匹配个地址,如:www.sohu.com,www.baidu.com,www.yahoo.com.n这样连着的网址最多为9个,其中也可以匹配sohu.com,baidu.com,yahoo.com.cn [询问]php中关于session的一点疑问 请教变量名动态问题。 请教EAN13条码号怎么生成?懂的师傅进来教一下。 PHP中使用正则表达式统计 急! 对函数的引用[php第一个求助帖] 怎样实现批量更新页面? PHP怎么样? 既然这么多人在php的session上出问题,为什么大家不来一起看看?? Fatal error: Call to a member function fetch_array() on a non-object in 62 line 新手转码问题 一个关于正则语法的问题
preg_match('/([^%]+)((?:%a3|23)+)(.+)/', $s, $r);
print_r($r);
Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )
$string='dj%a3%a3999';
if(preg_match('/^([dj]{2})([%a3]+)(\d{3})$/i', $string,$result)){
print_r($result);
}结果:
Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )
如果$s = 'dj%23999';则不行。
preg_match('/([^%]+)((?:%(?:a3|23))+)(.+)/', $s, $r);
或
preg_match('/([^%]+)((?:%a3|%23)+)(.+)/', $s, $r);正则表达式规则说明中有:
| 运算时如果发生歧义,则需要逐个开列或用括号括起来显然 (?:%a3|23) 中 % 被结合到了 a3 从而发生了歧义
老大,能不能帮我匹配个地址,如:www.sohu.com,www.baidu.com,www.yahoo.com.n这样连着的网址最多为9个,其中也可以匹配sohu.com,baidu.com,yahoo.com.cn