使用正则表达式处理Excel中数据的解决方案(非VBA)

呃,其实我并不是在Excel中实现的正则查找。

话说在Excel中进行正则表达式匹配需要通过编写VBA来实现。
问题的关键是我没接触过写VBA,所以折腾出替代方案:

先将 Excel另存为xml表格,然后用PHP读取XML文件并使用正则处理。

比如需要从联系表中读取所有159开头的电话号码:

  1. <?php
  2. $xml = "";
  3. $data = file_get_contents('data.xml');
  4. preg_match_all( "/\<Row\>(.*?)\<\/Row\>/is"$data, $blocks );
  5.  
  6. $Row = "";
  7. foreach( $blocks[0] as $block )
  8. {
  9.   preg_match( "/159[0-9]{8}/",$block,$Row);
  10.   if(isset($Row[0])){
  11.     echo($Row[0].'<br>');
  12.   }
  13. }
  14. echo('<br>-----end.--');
  15. ?>
In: LAMPAuthor: JetKingComments (2)

PHP中正则表达式的修饰符

修饰符:
在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着”e”并不等于”E”)。正则表达式里面的修饰符如下:
i :如果在修饰符中加上”i”,则正则将会取消大小写敏感性,即”a”和”A” 是一样的。
m:默认的正则开始”^”和结束”$”只是对于正则字符串如果在修饰符中加上”m”,那么开始和结束将会指字符串的每一行:每一行的开头就是”^”,结尾就是”$”。
s:如果在修饰符中加入”s”,那么默认的”.”代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!
x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。
e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。
A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
E:与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U:和问号的作用差不多,用于设置”贪婪模式”。

如:

  1. if(preg_match_all('/aaaaaa.+FFF/is', $rTxt, $arrTmp))
  2.   print_r($arrTmp[0][0]);
  3. else
  4.   echo('未找到匹配信息');
In: LAMPAuthor: JetKingComments (0)

[备忘录]PHP中的正则表达式笔记

一.正则表达式
1.匹配符
1)头匹配符”^”:如^0754,只匹配开头为0754的字符串
2)尾匹配符”$”:如0754$,只匹配结尾为0754的字符串
3)全字匹配:将^和$结合,如^0754$,匹配0754字符串
阅读全文…

In: LAMP, 零碎技术Author: JetKingComments (0)
1 pages