当前位置: 首页 > 面试题库 >

用于提取标签属性的正则表达式

戚飞雨
2023-03-14
问题内容

我正在尝试提取锚标记(<a>)的属性。到目前为止,我有这个表达:

(?<name>\b\w+\b)\s*=\s*("(?<value>[^"]*)"|'(?<value>[^']*)'|(?<value>[^"'<> \s]+)\s*)+

适用于像

<a href="test.html" class="xyz">

和(单引号)

<a href='test.html' class="xyz">

但不适用于不带引号的字符串:

<a href=test.html class=xyz>

如何修改我的正则表达式,使其与不带引号的属性一起使用?还是有更好的方法来做到这一点?

更新: 谢谢您到目前为止的所有好评和建议。
我没有提到一件事:很遗憾,我必须修补/修改不是由我编写的代码。而且没有时间/金钱从头开始重写这些东西。


问题答案:

如果你有一个像

<name attribute=value attribute="value" attribute='value'>

此正则表达式可用于依次查找每个属性名称和值

(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?

应用于:

<a href=test.html class=xyz>
<a href="test.html" class="xyz">
<a href='test.html' class="xyz">

它会产生:

'href' => 'test.html'
'class' => 'xyz'

注意: 这不适用于数字属性值,例如<div id="1">将不起作用。



 类似资料:
  • 我有一个正则表达式来从完整命令中提取脚本名。它适用于大多数情况,但不适用于示例数据中的第一行。 抽样资料 输出应该是 正则表达式不适用于第一行 https://regex101.com/r/cFjn85/1

  • 问题内容: 我正在寻找一个正则表达式,可以从Java中的HTML片段中获取src(不区分大小写)标签。 问题答案: 一种可能性: 是可能的(如果不区分大小写地匹配)。这有点混乱,故意忽略了不使用引号的情况。要表示它而不必担心字符串转义: 这符合: 一个或多个不是的字符(即可能的其他属性) 可选空格 可选空格 或的起始定界符 图片来源 (可能不包含单引号或双引号) 结束定界符 尽管表达式可以在此处停

  • 问题内容: 我有这样的字符串: 而且我只需要使用regexp的href值提取: 每次的href值也可以不同,可以更长或更短 问题答案: 假设myString包含带有元素的字符串。 由于href属性不能嵌套,因此应该没问题,并且不需要完整的HTML解析器。一个限制是它只能在双引号中找到href属性。

  • 我正在努力想出一个正则表达式,它只能在单词的开头找到符号。例如: 这里: 但不是这里:

  • 本文向大家介绍php过滤HTML标签、属性等正则表达式汇总,包括了php过滤HTML标签、属性等正则表达式汇总的使用技巧和注意事项,需要的朋友参考一下 清除空格,换行 过滤HTML属性 1,过滤所有html标签的正则表达式: 3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>): 4,过滤部分html标签的正则表达式的枚举式(比如需要过滤<a><p><b>等): 5,过滤

  • 本文向大家介绍PHP正则表达式抓取某个标签的特定属性值的方法,包括了PHP正则表达式抓取某个标签的特定属性值的方法的使用技巧和注意事项,需要的朋友参考一下 php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码。 下面随便给出一个例子 输出结果为 查看源码可以看到 第一次写blog好紧张哈哈哈,希望会对大家有