À partir de la doc fichier.lire() (je souligne):
fichier.lire([taille])
Lire au plus la taille octets du fichier (moins si la lecture hits EOF avant d'obtenir la taille en octets). Si la taille de l'argument est négatif ou omis, la lecture de toutes les données jusqu'à ce que EOF est atteint. Les octets sont retournés comme un objet de type string. Une chaîne vide est renvoyée lorsque EOF est rencontré immédiatement. (Pour certains fichiers, comme l'ats, il est logique de continuer la lecture après une EOF est atteint.) Notez que cette méthode peut appeler le sous-jacent C de la fonction fread plus d'une fois, dans un effort pour acquérir près de la taille octets que possible. Notez également qu'en cas de non-blocage de mode, moins de données que ce qui était demandé peut être renvoyé, même si aucun paramètre de taille a été donné.
Sachez qu'une regexp recherche sur une chaîne de grande taille de l'objet peut ne pas être efficace, et envisager de faire de la recherche, ligne par ligne, à l'aide de fichier.next() (un fichier objet est sa propre itérateur).