应该包含方括号的正则表达式在 Sublime Text 中排除它们

Regex that should include brackets excludes them in Sublime Text

我使用两种不同的在线工具测试了以下正则表达式:

\<(.*?)\>

在两者中它们产生相同的结果,即匹配 <any text within brackets> 包括括号。这就是我想要的。

但在 Sublime Text 中结果是不同的。它仅匹配 <any text within brackets>。括号被排除。

这是我一直在测试的一些示例文本:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Text for testing regex -->
<data type="lorem">
<h3>Improving the lorem in your ipsum</h3>
</data>
<data type="image" number="1"/>
<data type="ipsum">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
</data>

这是 Sublime Text 的错误,还是可以修改正则表达式以在 Sublime Text 中也包含括号?

谢谢。

这个,

(<.*?>)

然后可能就可以正常工作了。

Demo

大括号是用于捕获组的元字符,我想您只是想在其中包含 <>,这样您的捕获组 $1 就会变成 (<.*?>)

正则表达式电路

jex.im 可视化正则表达式:


如果您希望 simplify/modify/explore 表达式,regex101.com. If you'd like, you can also watch in this link 的右上面板已对其进行说明,它将如何匹配一些示例输入。


在 sublime 使用的正则表达式类型中,<> 字符如果没有转义则被视为文字。所以你要找的正则表达式是 <(.*?)>.

转义<有一个特殊的含义,即"the start of a word"。转义 > 和单词结尾也是如此。您可以尝试使用正则表达式 \<d vs d 和您提供的示例进行升华。