PHP正则表达式:如何匹配两个标签之间的内容且排除包含中文冒号的字符串?(冒号.字符串.中文.匹配.排除...)
php正则如何匹配除中文加冒号外的字符串?
在php中,如何使用正则表达式匹配两个
标签之间的内容,但排除包含中文加冒号(:)格式的字符串呢?示例:
要匹配的字符串:
<td>我是张三分</td> <td>张无忌: 你真的是张三分?</td>
问题:
使用正则表达式/
. ?匹配会匹配到中文加冒号,而 /[^(x{4e00}-x{9fa5}[::])] }无法正常匹配。解决方案:
使用preg_match_all函数和否定前瞻断言:
preg_match_all('/<td>(?!.*[x{4e00}-x{9fa5}:]).*&</td>/u', $input, $matches);
其中:
- /u修饰符启用unicode编码。
- (?!.*[x{4e00}-x{9fa5}:])否定前瞻断言意味着该模式仅匹配后面没有中文加冒号的字符串。
以上就是PHP正则表达式:如何匹配两个标签之间的内容且排除包含中文冒号的字符串?的详细内容,更多请关注知识资源分享宝库其它相关文章!