我如何 select 基于标记和 html 中的 class 内容的正则表达式文本?
How do i select text with regex based on tag and class content in html?
我有一个 html 标签作为字符串。如果 'md' 包含在此标记的 class 属性中,我想 select 它并获取标记中的表达式。
示例:
'<tag class="...blah md blah...">(expression)</tag>
<tag></tag>
是第一个select或
- Class 包含的属性
md
是第二个 select 或
- 同时标签不能为空
我的意思是,我需要一个以 <tag>
开头并以 </tag>
结尾的正则表达式,并在 class 属性中给出带有 md
的标签,但我无法摆脱它。
我所做的是尝试 select 具有直接 md 属性的那些,但这是错误的。嵌套标签也有问题。
(<b md(?!<|>).+>|<b \S+ md>|<b md>|<b .+ md .+>)(.+)(<\/b>)
https://regex101.com/r/3Vv0WG/1
我确定正确的形式在 class 属性中,但我无法编写此正则表达式。感谢您的帮助。
示例:
'<b class="... md ..."></b>'
不匹配,因为标签为空
'<i class="..."></i>'
不匹配,因为 class 属性不包含 md
<span class="...md...">ANYTHING</span>
匹配
不嵌套比较合适,会造成代码混乱
如果您没有解析器或 dom 可用并且只能从具有模式的字符串中获取部分,您可能会逃脱:
<(\w+) [^<>]*\bclass\s*=\s*"[^"]*\bmd\b[^"]*"[^<>]*>[^<>]+<\/>
备注
[^
表示否定字符 class 匹配除列出的任何字符
(\w+)
捕获第 1 组中的 1+ 个单词字符,</code> 是反向引用以匹配与第 1 组相同的内容 </li>
<li>该模式假设 <code>ANYTHING
部分没有字符 <
或 >
md
在单词边界之间匹配,防止与另一个“单词”部分匹配
» 深思熟虑,阅读 tony the pony。
我有一个 html 标签作为字符串。如果 'md' 包含在此标记的 class 属性中,我想 select 它并获取标记中的表达式。
示例:
'<tag class="...blah md blah...">(expression)</tag>
<tag></tag>
是第一个select或- Class 包含的属性
md
是第二个 select 或 - 同时标签不能为空
我的意思是,我需要一个以 <tag>
开头并以 </tag>
结尾的正则表达式,并在 class 属性中给出带有 md
的标签,但我无法摆脱它。
我所做的是尝试 select 具有直接 md 属性的那些,但这是错误的。嵌套标签也有问题。
(<b md(?!<|>).+>|<b \S+ md>|<b md>|<b .+ md .+>)(.+)(<\/b>)
https://regex101.com/r/3Vv0WG/1
我确定正确的形式在 class 属性中,但我无法编写此正则表达式。感谢您的帮助。
示例:
'<b class="... md ..."></b>'
不匹配,因为标签为空'<i class="..."></i>'
不匹配,因为 class 属性不包含 md<span class="...md...">ANYTHING</span>
匹配
不嵌套比较合适,会造成代码混乱
如果您没有解析器或 dom 可用并且只能从具有模式的字符串中获取部分,您可能会逃脱:
<(\w+) [^<>]*\bclass\s*=\s*"[^"]*\bmd\b[^"]*"[^<>]*>[^<>]+<\/>
备注
[^
表示否定字符 class 匹配除列出的任何字符(\w+)
捕获第 1 组中的 1+ 个单词字符,</code> 是反向引用以匹配与第 1 组相同的内容 </li> <li>该模式假设 <code>ANYTHING
部分没有字符<
或>
md
在单词边界之间匹配,防止与另一个“单词”部分匹配
» 深思熟虑,阅读 tony the pony。