Tenho lutado para obter uma regex que possa capturar dados extraídos de um arquivo PDF não tão limpo:
Cada linha deve conter 1. ID da escola (5 dígitos), 2. nome da escola, 3. número da inscrição, 4. outro número (=número da oferta)
Uma linha limpa se parece com "10394 ABC School 50 34" e pode ser capturada usando ([0-9]{5})\s{2,}(\D+)\s+(\d*)\s+(\d*)
. Um caso normal se parece com https://regex101.com/r/Mwv3bJ/1 , ignore o lookbehind negativo.
O problema com o qual tenho dificuldade é que algumas escolas têm um código postal parcial (1 ou 2 letras do alfabeto seguido de 1 ou 2 dígitos, como W19 ou SW2) no nome , então "10422 XYZ College W9 60 33" será capturado como (id: 10422)(escola: XYZ College W)(inscrições: 9)(ofertas: 60). https://regex101.com/r/YeNmT7/1
Quero que o (3:application#) não capture nenhum dígito imediatamente precedido por um alfabeto e, se tal \D{1,2}\d{1,2} existir no nome, seja capturado por (2:nome da escola). Tentei um grupo sem captura (?:^\D{1,2}\d{1,2}$) para me livrar de qualquer CEP em potencial, mas não funcionou.
Exemplos:
- 18747 Escola ABC 50 14 //(18747)(Escola ABC)(50)(14)
- 17646 Escola EFG W11 190 44 //(17646)(Escola EFG W11)(190)(44)
Por favor, avise.