Eu tenho cordas assim
hack SIGN (2005) g$
5 Cm Per Second - Makoto Shinkai Collection (2007)
Abenobashi (2002) gd
Ai City - La Notte Dei Cloni (1986) dfg
AIKA (1997)
Anna Dai Capelli Rossi (1979) £$"£
Quero exibir no Notepad++
2005
2007
2002
1986
1997
1979
Eu uso esse regex, mas parece que não funciona bem
ENCONTRAR:
\(\b(19|20)\d{2}\b\)
SUBSTITUIR
r\n\1\1
Mas ele me retorna um texto como este
hack SIGN r
2020 g$
5 Cm Per Second - Makoto Shinkai Collection r
2020
Abenobashi r
2020 gd
Ai City - La Notte Dei Cloni r
1919 dfg
..
Então esse regex não funciona como esperado
Responder1
Siga as instruções abaixo ao pressionar Ctrl
+ H
deBloco de notas++para corresponder a um grupo de números de 4 dígitos por cada linha e imprimir apenas esses caracteres, fornecendo os resultados esperados.
Encontre o que:
^.*?(\d{4}+).*$
Substituir com:
$1
- Modo de pesquisa:
Regular expression
- ImprensaReplace All
Resultados
2005
2007
2002
1986
1997
1979
Recursos adicionais
Como usar expressões regulares no Notepad++
Âncoras
As âncoras correspondem a uma posição na linha, em vez de a um caractere específico.
^
Corresponde ao início de uma linha (exceto quando usado dentro de um conjunto, veja acima).
$
Isso corresponde ao final de uma linha.
Intervalos ou tipos de caracteres
[^...]
O complemento dos personagens do conjunto.
Correspondências de um único caractere
., \c
Combina com qualquer personagem. Se você marcar a caixa que diz ".corresponde à nova linha", o ponto realmente fará isso, permitindo que o caractere "qualquer" seja executado em várias linhas. Com a opção desmarcada, então . corresponderá apenas aos caracteres dentro de uma linha, e não aos caracteres de final de linha (\r e \n)
Multiplicando operadores
*
Corresponde a 0 ou mais instâncias do caractere anterior, tantas quanto possível. Por exemplo, Sa*m corresponde a Sm, Sam, Saam e assim por diante.
*?
Zero ou mais do grupo anterior, mas minimamente: a string correspondente mais curta, em vez da string mais longa como acontece com o operador "ganancioso" *. Assim, m.*?o aplicado ao texto margin-bottom: 0; corresponderá a margin-bo, enquanto m.*o corresponderá a margin-botto.
{n}
Corresponde a n cópias do elemento ao qual se aplica.
+
Isso corresponde a 1 ou mais instâncias do personagem anterior, tantas quanto possível.
Grupos
(...)
Os parênteses marcam um subconjunto da expressão regular. A string correspondida pelo conteúdo dos parênteses
( )
pode ser reutilizada como uma referência anterior ou como parte de uma operação de substituição; veja Substituições, abaixo.Os grupos podem ser aninhados.
(?<some name>...), (?'some name'...),(?(some name)...)
Intervalos ou tipos de caracteres
\d
Um dígito no intervalo de 0 a 9, igual a[[:dígito:]].
Substituições
$n, ${n}, \n
Retorna o que corresponde à subexpressão numerada n. Índices negativos não são permitidos.
Responder2
- Ctrl+H
- Encontre o que:
^(?:.*?\(((?:19|20)\d{2})\).*|.*\R)$
- Substituir com:
$1
- confira Envolver
- verifique expressão regular
- NÃO VERIFIQUE
. matches newline
- Replace all
Explicação:
^ : beginning of line
(?: : start non capture group
.*? : 0 or more any character but newline, not greedy
\( : open parenthesis
( : start group 1
(?:19|20) : non capture group, 19 or 20
\d{2} : 2 digits
) : end group 1
\) : close parenthesis
.* : 0 or more any character but newline
| : OR
.* : 0 or more any character but newline
\R? : any kind of linebreak, optional
) : end non capture group
$ : end of line
Dada uma entrada como:
hack SIGN (2005) g$
5 Cm Per Second - Makoto Shinkai Collection (2007)
Abenobashi (2002) gd
Ai City - La Notte Dei Cloni (1986) dfg
AIKA (1997)
Anna Dai Capelli Rossi (1979) £$"£
123456 1234
(123) 4567
Obtemos:
2005
2007
2002
1986
1997
1979