我想找到某个 html 标签的所有用法并通过属性过滤结果。
我想找到某个 html 标签的所有用法并通过属性过滤结果。
<tag attribute1="'text123'" />
<tag attribute2="'true'"
attribute1="'text1'"/>
<tag attribute2="'true'"/>
=> 查找所有设置了 attribute1 的标签 \'tag\' => 忽略第三个示例
搜索可以是一种替代方法,但应该尊重多行。
任何帮助都将不胜感激
您可以使用如下模式:
<tag\b[^>]*?attribute1\s*=\s*"([^"]*)"[^>]*>
解释:
p2
p3
p4
p5
根据 IntelliJ IDEA 的文档 ,该搜索引擎使用 Java 的正则表达式风格,因此它也应该适用于这种搜索模式。
的正则表达式 Java 进行实时测试 https://regex101.com/r/spZG7c/1
准备了一个现场演示 JavaScript :
const pattern = /<\s*tag\b[^>]*?\battribute1\s*=\s*"([^"]*)"[^>]*>/g;
// When the document is ready, attach the event handlers.
document.addEventListener("DOMContentLoaded", function () {
const input = document.getElementById("input");
const searchButton = document.getElementById("search");
searchButton.addEventListener('click', (event) => {
console.log(
[...input.value.matchAll(pattern)]
);
event.preventDefault();
return false;
});
});
*, *::before, *::after {
box-sizing: border-box;
}
form {
/* Display the form in two columns. */
display: flex;
flex-direction: row;
column-gap: 1em;
}
form > div:first-child {
width: calc(100% - 6em); /* 100% - gap - right column. */
min-width: 20em; /* Enough for the textarea content. */
}
form > div:last-child {
width: 5em; /* Enough for the button. */
}
textarea {
width: 100%; /* Override cols="80". */
font-size: .85em;
}
.as-console-row-code {
font-size: .85em !important; /* Instead of 13px. */
}
<form action="#">
<div>
<textarea name="input" id="input"
cols="80" rows="13"
placeholder="Enter your HTML here"><tag attribute1="'text123'" />
<tag attribute2="'true'"
attribute1="'text1'"/>
<tag attribute2="'true'"/>
<!-- This one should not match -->
<tagger attribute1="something">
<!-- But this one yes -->
<tag data-id="6735"
attribute1="'some more text'"
required >
Whatever in here
</tag>
</tagger></textarea>
</div>
<div>
<button id="search"
title="Search for <tag ... attribute1 ...>">
Search
</button>
</div>
</form>