2 votes

Trouver toutes les phrases dans Visual Studio Code en utilisant Regex commence par et se termine par une phrase donnée et renommer le contenu en minuscules dans toute la solution.

Je veux trouver tous les endroits qui commencent par href=" et se termine par " Matches :

<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="stackoverflow.com/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>
<li><a href="../Foo/Index.html">Foo</a></li>

Le résultat attendu après le renommage

<li><a href="blah/index.html">Blah</a></li>
<li><a href="stackoverflow.com/blah/index.html">Blah</a></li>
<li><a href="../blah/index.html">Blah</a></li>
<li><a href="../foo/index.html">Foo</a></li>

L'expression regex que j'ai construite ne fonctionne pas :

^href".*\."$

Et je ne sais pas s'il est possible de changer toutes les occurrences trouvées en minuscules en utilisant la recherche globale dans le code VS ? Si ce n'est pas possible, pouvez-vous me donner une alternative, s'il vous plaît ? Cheers

5voto

Wiktor Stribiżew Points 100073

L'expression rationnelle de Visual Studio Code ne prend pas en charge les opérateurs de modification de la casse dans le modèle de remplacement.

Dans Notepad++, vous pouvez utiliser quelque chose comme

Trouvez : (href=")([^"]*\.[^".]+)(")
Remplacer : $1\L$2\E$3

Ver cette démo .

Détails

  • (href=") - Groupe 1 : href=" sous-chaîne
  • ([^"]*\.[^".]+) - Groupe 2 :
    • [^"]* - 0+ caractères autres que "
    • \. - un point
    • [^".]+ - 1+ caractères autres que " y .
  • (") - Groupe 3 : un double guillemet.

Le site $1\L$2\E$3 le motif de remplacement insère à nouveau la valeur du groupe 1, puis \L indique au moteur regex d'activer les minuscules, $2 est donc inséré en minuscules, \E arrête la sortie en minuscules, et $3 ajoute la valeur du groupe 3.

Si vous n'avez pas besoin de vérifier si le href contient un point, la regex peut être simplifiée en (href=")([^"]+)(") .

2voto

Code Maniac Points 29570

Vous pouvez essayer ceci

\bhref="([^>]*)

Explication

  • \b - Limite des mots.
  • href=" Correspondances href=" .
  • ([^>]+) - Faites correspondre n'importe quoi une ou plusieurs fois sauf > .

Démo

Démonstration du code de travail

const regex = /\bhref="([^>]+)/gm;
const str = `<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="http://stackoverflow.com/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>`;

let op = str.replace(regex,(match,p1)=>p1.toLowerCase());
console.log(op);

Eh bien, si vous voulez faire le remplacement aussi vscode lui-même, vous pouvez suivre ceci:-

  • Appuyez sur Ctrl + H .
  • Appuyez sur Alt + R .
  • Type your regex .
  • Appuyez sur Tab et tapez $1.
  • Appuyez sur Alt + Enter .
  • Appuyez sur F1 et tapez plus bas, puis appuyez sur Enter .
  • Appuyez sur Ctrl + Alt + Enter .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X