Eu tenho um arquivo de texto que denota comentários com um único '
.
Algumas linhas têm duas aspas, mas preciso obter tudo desde a primeira instância de ae '
a alimentação de linha.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
O regex apropriado seria o 'char seguido por qualquer número de quaisquer caracteres [incluindo zero caracteres] terminando com um token de fim de string / linha:
E se você quisesse capturar tudo após o 'char, mas não incluí-lo na saída, você usaria:
Isso basicamente diz: dê-me todos os caracteres que seguem o 'char até o final da linha.
Editar : foi observado que $ está implícito ao usar. * E, portanto, não é estritamente necessário, portanto, o padrão:
é tecnicamente correto, no entanto, é mais claro ser específico e evitar confusão para manutenção de código posterior, daí meu uso de $. Acredito que é sempre melhor declarar um comportamento explícito do que confiar em um comportamento implícito em situações em que a clareza pode ser questionada.
fonte
Começando com aspas simples (
'
), combine qualquer caractere (.
) zero ou mais vezes (*
) até o final da linha ($
).fonte
Quando tentei '. * No Windows (Notepad ++), ele iria corresponder a tudo depois da primeira' até o final da última linha.
Para capturar tudo até o final dessa linha, digitei o seguinte:
Isso só capturaria tudo de 'até o final dessa linha.
fonte
Em seu exemplo, eu escolheria o seguinte padrão:
use opções multilinha e globais para combinar todas as ocorrências.
Para incluir o avanço de linha na partida, você pode usar:
Mas isso pode perder a última linha se não houver alimentação de linha.
Para uma única linha, se você não precisar corresponder ao feed de linha, eu prefiro usar:
fonte
Isso irá capturar tudo até 'na referência anterior 1 - e tudo após' na referência anterior 2. Você pode precisar escapar dos apóstrofos, dependendo do idioma (\ ')
Modificação rápida: se a linha não tiver um '- referência anterior 1 ainda deve pegar a linha inteira.
fonte
https://regex101.com/r/Jjc2xR/1
Tenho certeza que este funciona, ele irá capturar o hexa serial no texto mal estruturado multilinhado abaixo
Eu sou um eterno novato em regex, mas vou tentar explicar este
(\ w * (Hex): w *): Encontre o texto na linha em que a string contém "Hex:"
(. *?) Este é o segundo texto capturado e significa tudo depois
(? = | $) cria um limite que é o espaço entre = e o |
Assim, com o segundo grupo, você terá o valor
fonte