php正则表达式总结
<?php echo 'wj'; echo '<br>'; $file = '<td>移动150卡</td><!--<td></td>--> <td>广西省南宁市</td>'; //$pattern = '/<td>[\x{4e00}-\x{9fa5}]+<\/td>/u'; $pattern = '/移动150卡<\/td><!--<td><\/td>-->.+<td>广西省南宁市<\/td>/is'; if(preg_match($pattern,$file,$pg)){ print_r($pg); } ?>
$msg = preg_replace("/<style>.+<\/style>/is", "", $msg); -----删除<style></style>和中间的部分
$msg = preg_replace("/<[^>]+>/", "", $msg); -----是删除<>和中间的内容
<?php echo 'wj'; echo '<br>'; /* $file = '<td>移动150卡</td><!--<td></td>--> <td>广西省南宁市</td>'; */ $file ='<td>广西省南宁市</td>'; $pattern = '/<td>[\x{4e00}-\x{9fa5}]+<\/td>/u'; //$pattern = '/移动150卡<\/td><!--<td><\/td>-->.+<td>广西省南宁市<\/td>/is'; if(preg_match($pattern,$file,$pg)){ print_r($pg); } ?>
如果上面的代码不能识别出中文(Array ( [0] => 广西省南宁市 )),是因为test.php文件的编码问题,将test.php文件的编码方式更改为utf-8即可。就匹配成功。
i (PCRE_CASELESS)
如果设定此修正符,模式中的字符将同时匹配大小写字母。
s (PCRE_DOTALL)
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。
.表示除了换行符之外的所有符号
[0-9]+表示一位或者多位的数字
<?php echo 'wj'; echo '<br>'; $file = '<td>移动150卡</td><!--<td></td>--> <td>广西省南宁市</td>'; //$pattern = '/<td>[\x{4e00}-\x{9fa5}]+<\/td>/u'; //$pattern = '/移动150卡<\/td><!--<td><\/td>-->.+<td>广西省南宁市<\/td>/is'; $pattern = '/移动150卡<\/td><!--<td><\/td>-->\r\n<td>.+<\/td>/i'; if(preg_match($pattern,$file,$pg)){ print_r($pg); } ?>
输出Array ( [0] => 移动150卡 广西省南宁市 )
//强制序列化问题修复--begin String str = gson.toJson(ntcInfoVO); String regex="\\w{3}\\s{1}\\d{1,2}\\,\\s{1}\\d{4}\\s{1}\\d{1,2}:\\d{1,2}:\\d{1,2}\\s{1}(AM|PM){1}"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); while (matcher.find()) { String tmp = matcher.group(); String res =convertDateFormate(tmp); if (null != tmp && tmp.length() > 0 && null != res) { str = str.replaceAll(tmp, res); } else { str = str.replaceAll(tmp, ""); //替换失败的话则替换为空字符串 } } //强制序列化问题修复--end /** * 将序列化异常的时间值矫正回来 * @param startDate * @return */ private static String convertDateFormate(String date) { if (date.length() > 0 && (date.contains("AM") || date.contains("PM"))) { SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy K:m:s a",Locale.US); Date dateTime = null; try { if (date.contains("12:00:00 AM")) { date = date.replace("12:00:00 AM", "00:00:00 AM"); } dateTime = sdf.parse(date); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf2.format(dateTime); } catch (ParseException e) { log.error("转换时间失败:", e); } } return null; }