Asterisco (*) e mais (+) não estão funcionando no Notepad ++ como uma expressão regular

3

Estou usando o Notepad ++ e aprendendo expressões regulares, mas estou me perguntando por que alguns dos meta caracteres não estão trabalhando no editor, ou seja, asterisco (*) e mais (+).

Por exemplo:

The tree is looking awesome with leaves and flowers.

Expressão regular: [tre *]

A expressão regular acima não está funcionando no Notepad ++ conforme o esperado.

    
por Max 17.03.2015 / 11:20

2 respostas

11

my purpose is to match tre and its preceding characters.

Bem, no seu exemplo The tree is looking awesome with leaves and flowers. a palavra fragmento tre não é precedida por nenhum caractere na mesma palavra, ela é precedida por caracteres que fazem parte de palavras anteriores. Isso faz com que sua pergunta pareça um pouco ambígua.

Para corresponder a qualquer caractere seguido por "t", "r" e "e", usaria .*tre .

Para corresponder "t", depois "r" e "e", seguido por qualquer caractere, usaria tre.* .

Para combinar uma palavra começando com "t", em seguida, "r", em seguida, "e", eu usaria tre\w*

My regular expression is [tre*]

Isso corresponde a um único caractere, o caractere correspondido pode ser qualquer um dos quatro especificados. Inside [] o metacaractere * é tratado apenas como um caractere comum (porque essa é a maneira mais útil para ser tratado nesse contexto).

Os colchetes [] são para especificar um caractere a ser encontrado no texto que pode ter várias possibilidades. Por exemplo, se você quiser corresponder uma das palavras Tree ou tree , poderá usar [Tt]ree , o que significa corresponder a um caractere que seja T ou t seguido por um segundo caractere que seja r seguido por um terceiro caractere que é e seguido por um quarto caractere que é e .

Você pode corresponder Tree e tree usando .ree , mas . corresponderá a qualquer caractere único, então o RE também corresponderia a free e outras palavras que você talvez não queira. [] fornece um meio para você ser mais específico que . ao especificar os valores de um único caractere no texto que você deseja corresponder

    
por 17.03.2015 / 11:43
2

* e + não são meta-caracteres quando estão em uma classe de caracteres. Isso é verdade para o regex em geral, não apenas para o Notepad ++. [a*+] significa "correspondência única a , * ou + " .

Se você quiser corresponder qualquer número de caracteres t , r ou e , use [tre]* . Ele irá corresponder a qualquer um destes:

tttrreerer
rrrrrr
er
t
(empty line)

Se você quiser corresponder única t , única r ou qualquer número de e s, use ([tr]|e*) ou (t|r|e*) . Esta expressão regular corresponde às seguintes linhas:

t
r
eeeeeeeee
(empty line)

E não corresponde, por exemplo. tre .

Aqui está um bom tutorial de regex .

    
por 17.03.2015 / 11:31