fccoelho aider (anthropic/claude-sonnet-4-20250514) commited on
Commit
5991a4f
·
1 Parent(s): ce1d11e

refactor: atualizar padrão regex para capturar referências numeradas multilinhas

Browse files

Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) <aider@aider.chat>

Files changed (1) hide show
  1. app.py +7 -7
app.py CHANGED
@@ -123,8 +123,8 @@ def extract_references_with_regex(text):
123
 
124
  # Padrões melhorados para extrair referências individuais
125
  patterns = [
126
- # Padrão 0: Referências numeradas com ponto (ex: 46. Autor et al. Título. Journal vol, pages (ano).)
127
- r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?(et\s+al\.)*?|[A-Z][A-Za-z\s,&.-:\d\?]+?\(\);)\.\s*([^.]+?)\.\s*([^.]+?)\s+(\d+),?\s*[\d–-]+\s*\((\d{4})\)\.\s*$',
128
 
129
  # Padrão 1: Autor(es). (Ano). Título. Journal/Editora.
130
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
@@ -158,11 +158,11 @@ def extract_references_with_regex(text):
158
 
159
  # Para o padrão numerado especial (6 grupos)
160
  if len(groups) == 6:
161
- title = groups[2].strip()
162
- journal = groups[3].strip()
 
163
  volume = groups[4].strip()
164
- year = groups[5].strip()
165
- pages = ""
166
  else:
167
  # Para outros padrões (4 grupos)
168
  year = groups[1].strip()
@@ -221,7 +221,7 @@ def create_highlighted_text(text, regex_references):
221
 
222
  # Padrões para destacar (mesmos da extração)
223
  patterns = [
224
- r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?(et\s+al\.)*?|[A-Z][A-Za-z\s,&.-:\d\?]+?\(\);)\.\s*([^.]+?)\.\s*([^.]+?)\s+(\d+),?\s*[\d–-]+\s*\((\d{4})\)\.\s*$',
225
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
226
  r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
227
  r'^([A-Z][A-Za-z\s,&.-]+?)\s+\((\d{4}[a-z]?)\)[.,]\s*([^.]+?)[.,]\s*([^.]+?)\.?\s*$',
 
123
 
124
  # Padrões melhorados para extrair referências individuais
125
  patterns = [
126
+ # Padrão 0 (novo): Referências numeradas multilinhas com autores múltiplos
127
+ r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?(?:Jr|Sr)?[,\s]*(?:[A-Z][A-Za-z\s,&.-]*?)*?):\s*([^.]+?)\.\s*([^.]+?)\s+(\d{4}),?\s*(\d+):(\d+[-–]\d+)\.',
128
 
129
  # Padrão 1: Autor(es). (Ano). Título. Journal/Editora.
130
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
 
158
 
159
  # Para o padrão numerado especial (6 grupos)
160
  if len(groups) == 6:
161
+ title = groups[1].strip()
162
+ journal = groups[2].strip()
163
+ year = groups[3].strip()
164
  volume = groups[4].strip()
165
+ pages = groups[5].strip()
 
166
  else:
167
  # Para outros padrões (4 grupos)
168
  year = groups[1].strip()
 
221
 
222
  # Padrões para destacar (mesmos da extração)
223
  patterns = [
224
+ r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?(?:Jr|Sr)?[,\s]*(?:[A-Z][A-Za-z\s,&.-]*?)*?):\s*([^.]+?)\.\s*([^.]+?)\s+(\d{4}),?\s*(\d+):(\d+[-–]\d+)\.',
225
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
226
  r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
227
  r'^([A-Z][A-Za-z\s,&.-]+?)\s+\((\d{4}[a-z]?)\)[.,]\s*([^.]+?)[.,]\s*([^.]+?)\.?\s*$',