Eu estou tentando escrever Regex para lookahead User name: e corresponder a palavra por trás até o final da linha:
O regex é:
^(?=User name:)\s*\[A-Za-z]+
e o texto é:
Action: NEW
User name: Matthew Thomas
Job title: Dealer Account Manager
Direct report: Craig Carlson
Department: Dealer Account Management
Location: Milton, QLD
Employment type: Permanent Full Time
Start date: 15/07/2013
Finish date:
__________________________________________
Decision Point 3
--------------
Read Only
Respostas:
(?=User name:)
o que você precisa é lookbehind, not lookahead:(?<=User name:)
^(?=User name:)
- lookbehind pesquisará no início, independentemente de onde você o colocou em sua expressão, por isso está procurando por "Nome do usuário:" seguido pelo início da linha e alguns espaços. Inclua o início da linha também:(?<=^User name:)
([A-Za-z]+)
[A-Za-z]
pode haver também espaços em seu nome, ou até mesmo algumas letras com sotaque, eu modifico assim:(\S.+)
(um caractere não espacial (seguintes espaços em branco) seguido de tudo até o final da linha)
Toda a expressão é:
(?<=^User name:)\s*(\S.+)$
Você pode testar é Aqui .
fonte
Não está muito claro o que você quer.
Eu coloquei seu texto de exemplo no arquivo text.txt.
Se você simplesmente quer entender a linha, existe a solução:
Se você quiser apenas o nome, podemos melhorar o comando com sed:
fonte