0
votes

Regex: Match sur nier un ensemble d'espaces bleus arbitraires avant et après un caractère de "commentaire"

Je cherche une regex à (non) correspond à un personnage de commentaire enveloppé par des espaces blanchisseurs arbitraires

par exemple avec "#" comme caractéristique de commentaire:

lignes supposées être correspondre: xxx

lignes supposées être pas correspondance: xxx

donc, quelque chose comme une négation de l'ensemble (zéro / * blouses espaces # zéro / * blanchissaces) xxx


2 commentaires

Quel est le problème avec votre propre regex?


Les deux espaces blanchisseurs ne sont pas «concoupés» dans une plage de blancheurs, de sorte que le regex ne correspond à aucune ligne non motivée.


3 Réponses :


2
votes

La regex suivante correspondra aux lignes qui n'ont pas le caractère "#" xxx


2 commentaires

Cette regex ne capture pas les lignes de code se terminant par commentaire.


@Alexl, ce n'est pas une exigence sur la question, mais je l'ai réparé.



1
votes

peut être quelque chose qui n'est pas optimisé, mais essayez ceci:

^[^#]*(?!\s*#).


1 commentaires

Content d'être utile!



1
votes

Pour vos données d'exemple, si Lookahead est pris en charge, vous pouvez utiliser un lookahead négatif pour affirmer que depuis le début de la chaîne, ce qui est à droite, ce n'est pas 0+ fois un espace blanche suivi d'un # .

Si tel est le cas, corrigez la chaîne entière. xxx

qui correspondra:

  • ^ début de la chaîne
  • (?! regardé négatif
    • \ s * # Match 0+ fois a whitespace char, puis #
    • ) Fermer Lookahead
    • . + correspond à n'importe quel caractère sauf Newline 1+ fois
    • $ fin de la chaîne

      Démo REGEX101


0 commentaires