1
votes

Virgule correspondante après certaines phrases

J'utilise la fonction de recherche et de remplacement des expressions régulières d'Atom et non du code JavaScript.

Je pensais que cette expression régulière compatible avec JavaScript fonctionnerait (je veux faire correspondre les virgules qui ont Ou plutôt derrière elle ):

(?!\b(Or rather)\b),
  • ?! = Lookahead négatif

  • \ b = limite du mot

  • (...) = rechercher les mots dans leur ensemble et non caractère par caractère

  • \ b = limite du mot

  • , = le caractère réel.

Cependant, si je supprime des caractères de "Ou plutôt", l'expression régulière correspond toujours. Je suis confus.

https://regexr.com/4keju p >


6 commentaires

Essayez-vous de faire correspondre Ou plutôt avant une virgule, ou quoi que ce soit autre que Ou plutôt avant une virgule?


@TimBiegeleisen J'essaie de faire correspondre la virgule. Toute virgule qui a Ou plutôt derrière elle.


(?: ou plutôt) (,)


Je veux faire correspondre les virgules qui ont Ou plutôt derrière mais dans le modèle, vous utilisez un lookbehind négatif


@alexchenco, vous pouvez utiliser lookbehind dans atom read ce fil


@CodeManiac Il n'est pas nécessaire d'utiliser un regard en arrière sans ancrage dans ce scénario. Il n'y aura pas de correspondances qui se chevauchent.


3 Réponses :


1
votes

Le motif (?! \ b (Ou plutôt) \ b), est égal à , car le lookahead négatif renvoie toujours vrai depuis , code> n'est pas égal à O .

Pour supprimer les virgules après Ou plutôt dans Atom , utilisez

Rechercher : \ b (Ou plutôt),
Remplacer par : $1

Assurez-vous de sélectionner l'option . * pour activer les expressions régulières (et le Aa est pour l'échange de sensibilité à la casse).

\ b (Ou plutôt), correspond

  • \ b - une limite de mot
  • (Ou plutôt) - Groupe de capture 1 qui correspond et enregistre le texte Ou plutôt dans une mémoire tampon accessible en utilisant $ 1 dans le modèle de remplacement
  • , - une virgule.

Démo JS regex:

var s = "Or rather, an image.\nor rather, an image.\nor rather, friends.\nor rather, an image---\nOr rather, another time they.";
console.log(s.replace(/\b(Or rather),/g, '$1'));
// Case insensitive:
console.log(s.replace(/\b(Or rather),/gi, '$1'));


2 commentaires

Merci d'avoir répondu. Existe-t-il un moyen de faire correspondre le , sans compter sur $ 1 ? J'utilise la fonction de recherche et de remplacement de regex d'Atom et non le code JavaScript.


@alexchenco Eh bien, je pense que le seul moyen dans Atom est ce que j'ai montré dans la réponse.



2
votes

Vous vouliez probablement utiliser une analyse positive au lieu d'une analyse négative

(?<=\b(Or rather)\b),

Démo Regex

Vous pouvez activer lookbehind dans atom en utilisant des indicateurs, Lire ce fil de discussion


0 commentaires

0
votes

Pour faire correspondre n'importe quelle virgule après "Ou plutôt", vous pouvez simplement utiliser (ou plutôt) (,) et accédez au deuxième groupe en utilisant match [2]

Ou une alternative serait d'utiliser ou plutôt comme un groupe non capturant (?: ou plutôt) (,) donc le premier groupe serait des virgules après "Ou plutôt"


0 commentaires