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>-->
<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;
    }
原文地址:https://www.cnblogs.com/usual2013blog/p/3318077.html