有这样一个需求,要从一个字符串中提取出来时间格式。在网站找了一圈php正则表达式,测试后效果都不太理想,很多还是错误的,严重误导。下面给出一个测试可用的php正则表达式匹配字符串中的时间格式的代码。
正则表达式代码示例如下:
$html = "久久博客www.99xq.cn将在2022-5-26 23:19:59正式改版上线,届时可能存在无法访问的情况,请大家稍安勿躁,最晚在2022-05-27即可恢复访问"; $patten = "/(0?\d{1,4})[^\w\d\r\n:](0?[1-9]|1[0-2])[^\w\d\r\n:](\d{4}|\d{2})\s([0-9]{1,2}):([0-9]{2}):([0-9]{2})/i"; preg_match_all($patten,$html,$matches); var_dump($matches); //$matches[0][0]就是获取到的时间,支持的格式如下: 1.2022-5-26 23:19:59 2.2022-05-26 23:19:59 3.22-5-26 23:19:59 4.22-5-26 3:19:59 …… 如果你还需要更特殊的,可以调整正则表达式中{}里面的数字,比如{1,2}表示匹配1-2位均可。
通过运行上面代码,可以看到不支持后面的时间提取,因为时间本身是个比较复杂的表现形式,比如跨时区,年月日汉字分割等等。这种情况下可以使用以下方法传递多个正则表达式:
function getMatches($pattern, $subject) { $matches = array(); if (is_array($pattern)) { foreach ($pattern as $p) { $m = getMatches($p, $subject); foreach ($m as $key => $match) { if (isset($matches[$key])) { $matches[$key] = array_merge($matches[$key], $m[$key]); } else { $matches[$key] = $m[$key]; } } } } else { preg_match_all($pattern, $subject, $matches); } return $matches; } $patterns = array( '/<span>(.*?)<\/span>/', '/<a href=".*?">(.*?)<\/a>/' ); $html = '<span>some text</span>'; $html .= '<span>some text in another span</span>'; $html .= '<a href="https://www.99xq.cn/php/449.html">here is the link</a>'; $html .= '<address>address is here</address>'; $html .= '<span>here is one more span</span>'; $matches = getMatches($patterns, $html); print_r($matches);
还有不明白的欢迎留言交流,本文原创自 https://www.99xq.cn/php/449.html
相关推荐
根据java正则表达式生成一个随机的字符串,具体可以去一下网站看:https://code.google.com/p/xeger/
易语言正则表达式类匹配中文源码,正则表达式类匹配中文,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
kettle 根据系统时间加正则表达式动态匹配获取多个文本文件
匹配3个连续的相同字符的正则表达式写法。和验证是否是连续数字或字母的js写法。
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
execall - 发现多个正则表达式匹配的字符串
本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本...用正则表达式替换字符串内容,使用正则表达式切割字符串,字符串匹配,将字符串“<msg>ha>ve modif”中的>替换为>将<替换为<将&替换为2. 等等情况!
java通过正则表达式匹配获取MAC(支持windows和Linux)
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理...
在labview中使用正则匹配模式很简单,难的就是使用正则表达式。很多人都搞不明白,查了很多资料还是不太明白。实际上就是一些类似通配符在作怪和其他语言也差不多。附件带上了,可以研究研究,构造正则表达式的方法...
使用正则表达式拆分字符串,程序完全可以运行,方便大家开发和调试
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。 语法 /正则表达式主体/修饰...
powerbuilder正则表达式,可以截取不定字符串。如 string ls_text ls_text = ' date of payment: 01.11.2004 ' …… ls_date = lnvo_re.of_getmatch(ls_text) //'01.11.2004' ls_day = lnvo_re.of_getmatch(ls_text,...
本文档详细描述了正则表达式各种语法和字符串使用正则表达式的各种方式
Java根据正则表达式生成字符串,包括了Xeger和automaton
正则表达式匹配工具很好很强大 放心使用 内附各种经典正则匹配公式
C#字符串和正则表达式参考手册》》》》》》》》》》》
java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。
使用正则表达式检测字符串中重复出现的词,程序完全可以运行,大家可以参考
正则表达式判断不包涵特殊字符(除了 指定字符 以外)