fccoelho aider (anthropic/claude-sonnet-4-20250514) commited on
Commit
b4139b2
·
1 Parent(s): 9c70697

refactor: atualizar padrão regex para capturar referências numeradas com múltiplos autores

Browse files
Files changed (1) hide show
  1. app.py +6 -6
app.py CHANGED
@@ -127,8 +127,8 @@ def extract_references_with_regex(text):
127
 
128
  # Padrões melhorados para extrair referências individuais
129
  patterns = [
130
- # Padrão 0 (novo): Referências numeradas multilinhas com autores múltiplos
131
- 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+)\.',
132
 
133
  # Padrão 1: Autor(es). (Ano). Título. Journal/Editora.
134
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
@@ -165,9 +165,9 @@ def extract_references_with_regex(text):
165
  if len(groups) == 6:
166
  title = groups[1].strip()
167
  journal = groups[2].strip()
168
- year = groups[3].strip()
169
- volume = groups[4].strip()
170
- pages = groups[5].strip()
171
  else:
172
  # Para outros padrões (4 grupos)
173
  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-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*$',
 
127
 
128
  # Padrões melhorados para extrair referências individuais
129
  patterns = [
130
+ # Padrão 0: Referências numeradas com autores múltiplos (formato: Número. Autores. Título. Journal info (ano).)
131
+ r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]+?(?:\s&\s[A-Z][A-Za-z\s,&.-]+?)*)\.\s*([^.]+?)\.\s*([^.]+?)\s+(\d+),?\s*([^(]*?)\s*\((\d{4})\)',
132
 
133
  # Padrão 1: Autor(es). (Ano). Título. Journal/Editora.
134
  r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
 
165
  if len(groups) == 6:
166
  title = groups[1].strip()
167
  journal = groups[2].strip()
168
+ volume = groups[3].strip()
169
+ pages = groups[4].strip()
170
+ year = groups[5].strip()
171
  else:
172
  # Para outros padrões (4 grupos)
173
  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,&.-]+?(?:\s&\s[A-Z][A-Za-z\s,&.-]+?)*)\.\s*([^.]+?)\.\s*([^.]+?)\s+(\d+),?\s*([^(]*?)\s*\((\d{4})\)',
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*$',