正则 匹配所有div标签 输出div里面不包含div
时间: 2023-04-04 20:02:06 浏览: 88
可以使用以下正则表达式来匹配所有不包含div标签的div标签:
```html
<div\b(?:(?!<div\b)[\s\S])*?</div>
```
这个正则表达式会匹配所有的div标签,并且在匹配div标签的内容时,会排除掉包含div标签的内容。
相关问题
php 正则匹配div内容,结果不含div标签
在 PHP 中,您可以使用 `preg_match` 函数来匹配正则表达式。以下是一个示例代码,可以匹配一个 div 元素中的内容并去掉 div 标签:
```php
$html = '<div class="my-div">Hello, world!</div>';
$pattern = '/<div\b[^>]*>(.*?)<\/div>/s';
preg_match($pattern, $html, $matches);
if ($matches) {
$content = $matches[1];
$content = strip_tags($content); //去掉 HTML 标签
echo $content;
}
```
解释:
- `/<div\b[^>]*>(.*?)<\/div>/s` 是一个正则表达式,可以匹配 div 元素的内容。`/s` 标记表示让 `.` 匹配任何字符,包括换行符。
- `preg_match($pattern, $html, $matches)` 函数执行正则表达式匹配,将匹配结果存储在 `$matches` 数组中。
- `$matches[1]` 是匹配结果中第一个括号内的内容,即 div 元素中的内容。
- `strip_tags` 函数可以去掉字符串中的 HTML 标签,从而得到纯文本内容。
在实际使用中,您可能需要根据具体的需求来修改正则表达式和处理结果的方式。
正则 匹配超过 div中超过 3个链接的
可以使用以下正则表达式来匹配超过 div 中超过 3 个链接的情况:
```
<div[^>]*>(?=(?:[^<]*<a[^>]*>[^<]*<\/a>[^<]*){4,})[^<]*<\/div>
```
解释:
1. `<div[^>]*>` 匹配 `<div` 开始标签;
2. `(?=(?:[^<]*<a[^>]*>[^<]*<\/a>[^<]*){4,})` 使用正则表达式的 Positive Lookahead,表示紧接着的文本需要满足以下条件:
- `(?:[^<]*<a[^>]*>[^<]*<\/a>[^<]*)` 匹配一个带有 href 属性的链接,其中包含任意数量的其他文本;
- `{4,}` 表示链接的数量必须超过 3 个;
3. `[^<]*<\/div>` 匹配 div 的结束标签。
需要注意的是,这个正则表达式只能匹配一行文本中的 div,如果 div 的内容跨越了多行,则需要使用多行模式(即在正则表达式的开头加上 `(?m)`)。另外,这个正则表达式只能匹配包含 href 属性的链接,如果链接使用了其他属性或无属性,则需要调整正则表达式匹配条件。
阅读全文