[start](.*?)[end]
Zhich placera le texte au milieu d'une capture.
J'ai un fichier au format suivant :
Je voudrais récupérer le Data I want
entre les balises [Start]
et [End]
en utilisant un Regex. Quelqu'un peut-il me montrer comment cela pourrait être fait ?
[start](.*?)[end]
Zhich placera le texte au milieu d'une capture.
[start]s*(((?![start]|[end]).)+)s*[end]
Cela devrait, espérons-le, supprimer également les marqueurs [start]
et [end]
.
Avec Perl, vous pouvez entourer les données que vous voulez de () et les extraire plus tard, peut-être que d'autres langages ont une fonctionnalité similaire.
if ($s_output =~ /(data data data data START(data data data)END (data data)/)
{
$dataAllOfIt = $1; # 1 full string
$dataInMiddle = $2; # 2 Middle Data
$dataAtEnd = $3; # 3 End Data
}
Eh bien, si vous garantissez que chaque balise de début est suivie d'une balise de fin, alors ce qui suit fonctionnera.
[start](.*?)[end]
Cependant, si vous avez un texte complexe tel que le suivant :
[start] sometext [start] sometext2 [end] sometext [end]
alors vous rencontrerez des problèmes avec regex.
Maintenant, l'exemple suivant va extraire tous les liens dynamiques d'une page :
'/<a(.*?)a>/i'
Dans le cas ci-dessus, nous pouvons garantir qu'il n'y aura pas de cas imbriqués de :
'<a></a>'
Il s'agit donc d'une question complexe qui ne peut pas être résolue avec une réponse simple.