2017-06-02 1 views
1

Je compare deux fichiers différents, et je suis en utilisant ces filtres en ligne:Pourquoi WinMerge ignore-t-il une ligne mais pas l'autre?

  • ^' - Ignore les lignes qui commencent par un caractère '
  • ^[ |\t]*// - Ignorer les lignes qui commencent à zéro ou plusieurs espaces ou des tabulations, a procédé //
  • [\/\/]+.* - Ignorez les lignes avec // précédées d'un nombre quelconque de caractères, la seule restriction étant les sauts de ligne.

Cependant, le comportement semble ignorer incompatible:

Pourquoi cette première déclaration de cas, mais ignoré le second ne l'est pas?

Je devine qu'il a quelque chose à voir avec le / dans la chaîne étant affectée, mais mon troisième filtre de ligne ressemble explicitement 2 // afin que ne devrait pas être le problème ...

+0

Êtes-vous sûr que '[\/\ /] +. *' fait ce que vous pensez qu'il fait? –

+1

'[\/\ /] +. *' Correspond à/à la fin de la ligne. [] est "n'importe quoi dans ce groupe", et vous ne faites que lister le caractère/deux fois. Donc il n'a pas besoin d'une seconde pour faire une correspondance. Cela équivaut à '\ /.*' – Tezra

+1

@ sab669 '(\/\ /) +. *' 'Correspond' '' '' '' 'à la fin de la ligne (. * Rend + redondant). Mais c'est probablement ce que tu voulais. (le '()', pas la redondance) – Tezra

Répondre

1

[\/\/]+.* correspond à/à la fin de la ligne. [] est "n'importe quoi dans ce groupe", et vous ne faites que lister le caractère/deux fois. Donc il n'a pas besoin d'une seconde pour faire une correspondance. Elle est équivalente à \/.*

(\/\/)+.* correspondrait // à la fin de la ligne (. * Rend + redondant). Mais c'est probablement ce que tu voulais. (le(), pas la redondance) C'est équivalent à \/\/.*

+0

@ sab669 Enveloppé commentaire explications en réponse. 3 – Tezra