ForHosting KIT · Texte et IA

Extraire les lignes avec une regex

Dans un journal avec des lignes INFO, WARN et ERROR, l'expression ^ERROR\b ne garde que les 2 lignes d'erreur sur 4, inchangées et dans l'ordre. Chaque ligne est testée seule, donc un joker ne déborde jamais sur la suivante. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Motif
^ERROR\b
Vous obtenez
Résultat
ERROR database unavailable ERROR request timed out
Correspondances
2
Total de lignes
4

Extrayez les lignes correspondant à une expression régulière lorsqu’un long journal, rapport, export de configuration ou texte structuré contient bien plus d’informations que nécessaire. Fournissez le texte, un motif regex JavaScript et des indicateurs facultatifs : la capacité teste chaque ligne complète et renvoie uniquement les correspondances dans leur ordre d’origine. Elle accepte les fins de ligne LF, CRLF et CR, préserve le contenu des lignes retenues et indique le nombre de correspondances ainsi que le total examiné. Le traitement est local et déterministe, sans modèle ni dépendance réseau.

Écrivez un motif ciblant exactement les lignes voulues

Le motif est appliqué séparément à chaque ligne complète, ce qui rend les ancres particulièrement utiles. Commencez par ^ lorsque l’élément pertinent doit se trouver au début, et terminez par $ lorsque les derniers caractères comptent. Par exemple, ^ERROR\b sélectionne les entrées d’erreur conventionnelles sans accepter une étiquette telle que ERRORS, tandis que \.csv$ conserve les noms de fichiers portant cette extension.

Fournissez la source de l’expression régulière et non une notation entre barres : saisissez ^WARN, et non /^WARN/. Les indicateurs JavaScript facultatifs sont transmis séparément. L’indicateur i ignore la casse ; les autres gardent leur sens JavaScript standard.

Chaque ligne retenue est renvoyée sans modification et conserve sa position relative. Les lignes non conformes disparaissent, mais l’outil ne supprime pas les espaces, ne réécrit pas, ne trie pas, ne déduplique pas et n’interprète pas le contenu. Ce contrat précis convient à l’automatisation, car il livre un sous-ensemble prévisible de la source plutôt qu’un résumé susceptible d’omettre une preuve importante.

Filtrez journaux et textes structurés sans altérer les preuves

Le filtrage ligne par ligne convient naturellement aux journaux d’applications, sorties de commandes, exports délimités, rapports de tests et fichiers de configuration. Une équipe d’assistance peut isoler des identifiants de requête, codes d’état ou niveaux de gravité avant de joindre un extrait concis à un incident. Une équipe de développement peut conserver les assertions en échec d’une longue exécution.

Un pipeline d’exploitation peut sélectionner les entrées dont l’horodatage, le nom d’hôte ou le préfixe de composant respecte une convention connue. Comme la recherche porte sur une seule ligne à la fois, un joker ne déborde pas accidentellement sur l’enregistrement suivant. Les séparateurs LF, CRLF de Windows et CR seul sont reconnus ; le texte renvoyé utilise des LF stables afin que les comparaisons restent cohérentes entre plateformes.

Vous pouvez sélectionner volontairement les lignes vides avec ^$. Un saut final est considéré comme un terminateur et non comme une entrée vide supplémentaire. Outre le résultat assemblé, la réponse fournit un tableau des lignes retenues ainsi que les nombres de correspondances et de lignes examinées, sans imposer une nouvelle analyse aux scripts.

Validez les motifs et intégrez le résultat en toute sécurité

La capacité refuse un texte absent ou vide, un motif absent ou vide, des indicateurs non pris en charge ou répétés, des modes Unicode incompatibles et toute expression que le moteur JavaScript ne peut pas compiler. Une réponse sans correspondance reste utile : elle contient un résultat vide, un tableau de lignes vide, un compteur de zéro et le nombre de lignes inspectées. Les tailles du texte et du motif sont limitées pour maintenir une consommation mémoire prévisible dans le traitement en périphérie comme dans le navigateur gratuit.

Avant l’intégration, testez toute nouvelle expression sur des exemples représentatifs, ancrez-la lorsque le format le permet et évitez les répétitions imbriquées inutilement ambiguës. Sans réseau, hasard, horloge ni modèle linguistique, une même entrée donne toujours la même sortie.

Isoler les entrées d’erreur

Conservez uniquement les lignes commençant par un niveau d’erreur ou contenant un identifiant de requête avant l’analyse d’un incident.

Sélectionner des enregistrements structurés

Extrayez les lignes dont les préfixes, états, noms de fichiers ou identifiants respectent une expression régulière précise.

Réduire la sortie des tests

Gardez les assertions en échec et les marqueurs de diagnostic d’un long journal de compilation sans modifier leur ordre.

Faut-il placer des barres autour de l’expression régulière ?

Non. Envoyez seulement le motif, par exemple ^ERROR\b. Placez les indicateurs comme i dans le champ prévu à cet effet.

Le motif s’applique-t-il à chaque ligne ou au texte entier ?

Il s’applique indépendamment à chaque ligne complète. Une ligne est renvoyée une fois si l’expression correspond à un emplacement quelconque.

Les lignes correspondantes sont-elles modifiées ?

Non. Leurs caractères et leur ordre sont préservés. Seuls les séparateurs du résultat assemblé sont normalisés en LF.

Quel est le tarif ?

Vous pouvez exécuter gratuitement le même filtrage déterministe dans le navigateur.

Comment ignorer la différence entre majuscules et minuscules ?

Ajoutez l'option i, que vous saisissez à part de l'expression. Avec elle, ^error garde aussi les lignes qui commencent par ERROR ou Error. Les autres options habituelles des expressions régulières gardent leur sens ordinaire.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/str/extract-lines-matching

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/str/extract-lines-matching \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"INFO server started\nERROR database unavailable\nWARN retrying\nERROR request timed out","pattern":"^ERROR\\b"}'
{
  "text": "INFO server started\nERROR database unavailable\nWARN retrying\nERROR request timed out",
  "pattern": "^ERROR\\b"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.extract_lines_matching",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Utilisez l’outil du navigateur pour une recherche rapide ou appelez l’API pour $0.002 par requête réussie.

Validez les motifs et intégrez le résultat en toute sécurité

Ces cas renvoient invalid_input au lieu de produire silencieusement un résultat vide ; une faute dans une règle automatisée se distingue ainsi d’un motif valide qui ne trouve simplement rien. Utilisez le tableau pour obtenir du JSON structuré ou le résultat assemblé pour transmettre le texte filtré à un fichier, un ticket ou une autre commande. L’automatisation API coûte $0.002 par requête réussie ; le navigateur reste gratuit.

Que se passe-t-il si aucune ligne ne correspond ?

La requête réussit avec un résultat et un tableau vides, matched_count à zéro et total_lines indiquant le nombre de lignes inspectées.

Consulter la documentation complète du KIT →