星号 (*) 和加号 (+) 在 Notepad++ 中无法用作正则表达式

星号 (*) 和加号 (+) 在 Notepad++ 中无法用作正则表达式

我在用记事本++并学习正则表达式,但我想知道为什么某些元字符在编辑器中不起作用,即星号(*)和加号(+)。

例如:

这棵树长满了叶子和花朵,看上去非常美丽。

正则表达式:[tre*]

上述正则表达式在 Notepad++ 中无法按预期工作。

答案1

我的目的是匹配tre和它的人物。

那么在你的例子中,The tree is looking awesome with leaves and flowers.fragment 这个词tre不是先行同一单词中的任何字符,其前面都是属于较早单词的字符。这使得你的问题看起来有点模棱两可。

为了匹配后跟“t”然后是“r”然后是“e”的任何字符,我会使用.*tre

为了匹配“t”然后是“r”然后是“e”后面跟着的任意字符,我会使用tre.*

为了匹配单词从“t”开始,然后是“r”,然后是“e”,我会使用tre\w*

我的正则表达式是 [tre*]

匹配单个字符,匹配的字符可以是任意指定的四个字符之一。[]元字符内部*仅被视为普通字符(因为这是在那种情况下最有用的处理方式)。

括号[]用于指定在文本中找到的一个字符,该字符可能有多种可能性。例如,如果您想要匹配单词Tree或 ,则tree可以使用[Tt]ree,这意味着匹配一个字符,该字符后跟第二个字符T,该字符后跟第三个字符,该字符后跟第四个字符,即。tree

您可以使用匹配Tree和,但匹配任何单个字符,因此 RE 也会匹配和您可能不想要的其他单词。为您提供了一种比指定要匹配的文本中单个字符的值更具体的方法tree.ree.free[].

答案2

*并且+当在字符类中时不是元字符。这通常适用于正则表达式,而不仅适用于 Notepad++。[a*+]意味着“匹配单个a*+

如果要匹配任意数量的字符tre,请使用[tre]*。它将匹配以下任意一个:

tttrreerer
rrrrrr
er
t
(empty line)

如果要匹配单个t、单个r或任意数量的es,请使用([tr]|e*)(t|r|e*)。此正则表达式匹配以下行:

t
r
eeeeeeeee
(empty line)

并且不会匹配例如tre

这是一个很好的正则表达式教程

相关内容