20. 07. 09
呃,其实我并不是在Excel中实现的正则查找。
话说在Excel中进行正则表达式匹配需要通过编写VBA来实现。
问题的关键是我没接触过写VBA,所以折腾出替代方案:
先将 Excel另存为xml表格,然后用PHP读取XML文件并使用正则处理。
比如需要从联系表中读取所有159开头的电话号码:
- <?php
- $xml = "";
- $data = file_get_contents('data.xml');
- preg_match_all( "/\<Row\>(.*?)\<\/Row\>/is", $data, $blocks );
-
- $Row = "";
- foreach( $blocks[0] as $block )
- {
- preg_match( "/159[0-9]{8}/",$block,$Row);
- if(isset($Row[0])){
- echo($Row[0].'<br>');
- }
- }
- echo('<br>-----end.--');
- ?>
25. 12. 08
修饰符:
在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着”e”并不等于”E”)。正则表达式里面的修饰符如下:
i :如果在修饰符中加上”i”,则正则将会取消大小写敏感性,即”a”和”A” 是一样的。
m:默认的正则开始”^”和结束”$”只是对于正则字符串如果在修饰符中加上”m”,那么开始和结束将会指字符串的每一行:每一行的开头就是”^”,结尾就是”$”。
s:如果在修饰符中加入”s”,那么默认的”.”代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!
x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。
e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。
A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
E:与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U:和问号的作用差不多,用于设置”贪婪模式”。
如:
- if(preg_match_all('/aaaaaa.+FFF/is', $rTxt, $arrTmp))
- print_r($arrTmp[0][0]);
- else
- echo('未找到匹配信息');
31. 10. 08
一.正则表达式
1.匹配符
1)头匹配符”^”:如^0754,只匹配开头为0754的字符串
2)尾匹配符”$”:如0754$,只匹配结尾为0754的字符串
3)全字匹配:将^和$结合,如^0754$,匹配0754字符串
阅读全文…