2

In notepad++ I tried to make a regex to match <tr> tags. At first, I thought that sharp braces had to be escaped, so I tried \<tr\>. However, this matched not just the beginning tags as I would have expected, but all of the <tr>s (both <tr> and </tr>). Why is this?

4

2 回答 2

7

\<\>在某些正则表达式实现中表示“单词边界”,包括 Notepad++。从记事本++文档

\<这匹配使用 Scintilla 的单词定义的单词的开头。

\> 这匹配使用 Scintilla 的单词定义的单词结尾。

单词边界是非单词字符和单词字符之间的零宽度匹配。Scintilla对“字字符”的定义是:

单词被定义为以字符 AZ az 0-9 和 _ 开头和/或结尾的字符串。Scintilla 通过用户设置扩展了这个定义。该词的前面和/或后面还必须有提到的字符之外的任何字符。

因此,您的正则表达式\<tr\>实际上匹配<(or /) 和之间的单词边界t,然后是,然后是和tr之间的单词边界。r>

于 2013-09-06T13:46:56.553 回答
3
  • 转义需要反斜杠,例如\{
  • 你不需要(不应该)逃避< or >
  • 如果你把它们转义了,这意味着单词边界,不仅<tr>, </tr>,tr,匹配
于 2013-09-06T13:41:40.860 回答