在 SublimeText2 中搜索时忽略标记
Ignore Markup when searching in SublimeText2
在 HTML 文档中工作时,我想查找所有 < 或 > 符号并将其替换为 >;或 <.有什么方法可以轻松替换内容中的实例,比如在 <p>
标签中,但不能更改包装标签的 < 和 >?
编辑: 这是一个简单的例子。在格式化某人的作品(有时是多段技术写作)和 HTML 的格式时,我通常会使用它。我希望能够将小于号和大于号转换为它们的 HTML 代码,而不会弄乱页面的 HTML 标记:
<html>
<head>
</head>
<body>
<p>I want to convert these characters: < ></p>
<ul>
<li>
Greater than: >
</li>
<li>
Less than: <
</li>
<li>Images: <img src="test.jpg"><br><img src="test.jpg"></li>
</ul>
</body>
</html>
我建议在 search/replace 中使用 Sublime 的正则表达式模式,并使用 lookahead/lookbehind 断言来完成你想要的。我将尝试编写一个示例正则表达式并在完成后立即更新答案,但这应该让您开始探索如何实现您的目标。
更新:
这应该可以帮助您找到不属于正常 HTML/XML 标签的 <
的所有实例。在打开正则表达式模式的情况下在搜索字段中输入 <(?!/?\w+>)
应该会导致它锁定任何不符合 XML/HTML 标签规则的 <
。
>
会更难,即使可能使用该方法,因为回顾不允许可变长度匹配。解决方案可能是使用第一个正则表达式将 <
替换为文档中未使用的某些字符或字符组合,使用另一个正则表达式交换 >
,然后交换替换初始字符的字符<
。我也想到了。
另一个更新:
这是我会采取的方法。它需要多个步骤,但很简单:
- 找到
(?:<)(\w+)([^<>]*?)(?:>)(.*)(?:<)(/)(?:>)
并用 @@@@@@@@
替换以重新格式化标记对以保护它们免受后续步骤的影响。
- 找到
(?:<)(\w+)([^<>]*?/)(?:>)
并替换为 @@@@
。这将处理 self-terminating 标签,如 <br/>
。如果你有
- 找到
<
并替换为 ||
- 找到
>
并替换为 <
- 找到
||
并替换为>
- 找到
(?:\@\@)(.+?)(?:\@\@)
并替换为 <>
以恢复标签。
当然,您可以将 @@
和 ||
替换为您喜欢的任何内容,只要它们不相同并且不会出现在文档的其他地方即可。此方法也仅在您的 html 符合 XHTML 时才有效,特别是所有标签都必须具有结束标签,并且 <img>
和 <br>
等单个标签必须自闭,例如 <img/>
和 <br/>
在 HTML 文档中工作时,我想查找所有 < 或 > 符号并将其替换为 >;或 <.有什么方法可以轻松替换内容中的实例,比如在 <p>
标签中,但不能更改包装标签的 < 和 >?
编辑: 这是一个简单的例子。在格式化某人的作品(有时是多段技术写作)和 HTML 的格式时,我通常会使用它。我希望能够将小于号和大于号转换为它们的 HTML 代码,而不会弄乱页面的 HTML 标记:
<html>
<head>
</head>
<body>
<p>I want to convert these characters: < ></p>
<ul>
<li>
Greater than: >
</li>
<li>
Less than: <
</li>
<li>Images: <img src="test.jpg"><br><img src="test.jpg"></li>
</ul>
</body>
</html>
我建议在 search/replace 中使用 Sublime 的正则表达式模式,并使用 lookahead/lookbehind 断言来完成你想要的。我将尝试编写一个示例正则表达式并在完成后立即更新答案,但这应该让您开始探索如何实现您的目标。
更新:
这应该可以帮助您找到不属于正常 HTML/XML 标签的 <
的所有实例。在打开正则表达式模式的情况下在搜索字段中输入 <(?!/?\w+>)
应该会导致它锁定任何不符合 XML/HTML 标签规则的 <
。
>
会更难,即使可能使用该方法,因为回顾不允许可变长度匹配。解决方案可能是使用第一个正则表达式将 <
替换为文档中未使用的某些字符或字符组合,使用另一个正则表达式交换 >
,然后交换替换初始字符的字符<
。我也想到了。
另一个更新: 这是我会采取的方法。它需要多个步骤,但很简单:
- 找到
(?:<)(\w+)([^<>]*?)(?:>)(.*)(?:<)(/)(?:>)
并用@@@@@@@@
替换以重新格式化标记对以保护它们免受后续步骤的影响。 - 找到
(?:<)(\w+)([^<>]*?/)(?:>)
并替换为@@@@
。这将处理 self-terminating 标签,如<br/>
。如果你有 - 找到
<
并替换为||
- 找到
>
并替换为<
- 找到
||
并替换为>
- 找到
(?:\@\@)(.+?)(?:\@\@)
并替换为<>
以恢复标签。
当然,您可以将 @@
和 ||
替换为您喜欢的任何内容,只要它们不相同并且不会出现在文档的其他地方即可。此方法也仅在您的 html 符合 XHTML 时才有效,特别是所有标签都必须具有结束标签,并且 <img>
和 <br>
等单个标签必须自闭,例如 <img/>
和 <br/>