2017-09-20 3 views
1

Ce que je veux faire:Comment attraper un caractère (y compris n) dans Visual Studio Regex

Je veux reformater un tas de fichiers HTML De même écrit dans Visual Studio. Les parties html peuvent avoir un nombre différent de lignes, mais je sais qu'elles commencent par une balise <div id="some_id"> et qu'aucune autre balise <div> n'est jointe. Alors, comment est-ce que j'écrirais une regex qui attrape n'importe quel nombre de lignes entre?

Ce que j'essayé jusqu'à présent:

Je ne peux pas utiliser le ., parce qu'il ne se coince pas les sauts de ligne. Mais je ne sais pas non plus comment dire à Visual Studio pour attraper soit \n ou .. Je sais comment utiliser les ensembles (comme [a-z0-9]) mais dès que vous mettez un . dans eux, il se transforme en un littéral. Alors <div id="some_id">[.\n]*?</div> prises seulement divs qui contiennent un tas de points et de nouvelles lignes

Merci à l'avance

+0

Vous devez ajouter '\ r',' [\ s \ S \ r] * ' –

Répondre

1

Dans Visual Studio Rechercher et remplacer, vous pouvez correspondre à des caractères, y compris les sauts de ligne en utilisant une classe de caractères [\s\S\r]. Pour une raison quelconque, [\s\S] ne correspond pas au symbole CR (retour chariot).

Votre classe de caractères [.\n] correspond uniquement à un littéral . ou un saut de ligne.

Ainsi, utilisez

<div id="some_id">[\s\S\r]*?</div> 
        ^^^^^^^^^^