我正在尝试匹配 html 标签的内容/文本中的单词 contact
。我可以获取标签之间的所有文本:
http://rubular.com/r/IkhG2nhmnS
与:
(?<=\"\>)(.*?)(?=\<\/)
但是我只想搜索单词contact
,它不起作用:
http://rubular.com/r/We44nHisLf
与:
(?<=\"\>)(contact*?)(?=\<\/)
谁能指导我如何在 html 标签的文本/内容中匹配我想要的词。在上述情况下,我想查找/匹配单词 contact
谢谢你的帮助
描述
此正则表达式将提取 anchor 标记中 href 内的所有文本。
<a\b[^>]*?\bhref=(['"])([^'"]*)\1[^>]*?>
群组
组 0 将包含来自 <a
的整个匹配字符串到 >
- 收到 href 部分的公开报价。这稍后在正则表达式中用作
\1
匹配关闭引号
- 接收href值的内容
免责声明
使用正则表达式可能不是解析 HTML 的好主意,因为有许多边缘情况可能会使正则表达式出错。
PHP 代码示例:
<?php
$sourcestring="your source string";
preg_match_all('/<a\b[^>]*?\bhref=([\'"])([^\'"]*)\1[^>]*?>/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
$matches Array:
(
[0] => Array
(
[0] => <a href="contact">
)
[1] => Array
(
[0] => "
)
[2] => Array
(
[0] => contact
)
)
总结
-
<a
匹配<a
-
\b
单词 char (\w) 和
不是单词字符的东西
-
[^>]*?
任何字符,除了:'>'(0 次或更多次
(匹配尽可能少的数量))
-
\b
单词 char (\w) 和
不是单词字符的东西
-
href=
匹配href=
-
(
分组并捕获到\1:
-
['"]
任何字符:''', '"'
-
)
\1 结束
-
(
分组并捕获到\2:
-
[^'"]*
任何字符,除了:'''、'"'(0 或
更多次(匹配最多的
可能))
-
)
\2 结束
-
\1
捕获匹配的内容\1
-
[^>]*?
任何字符,除了:'>'(0 次或更多次
(匹配尽可能少的数量))
-
>
匹配>
-
)
分组结束