2011-05-27 4 views
1

J'ai une séquence de code que j'ai besoin de trouver rapidement dans plusieurs fichiers différents. Il a la forme:Comment écrire ceci comme une expression régulière?

<?php 
//{{56541616 

où le nombre à 8 chiffres peut être n'importe quelle séquence de nombres et de lettres. Je voudrais utiliser des expressions régulières pour localiser le code, mais je suis encore nouveau pour eux, et c'est assez complexe pour que ça me lance. Voici ce que j'ai trouvé pour l'expression rationnelle, mais cela ne semble pas fonctionner.

"<\?/php/n//\{\{[:alnum:]{8}" 

des conseils sur ce que je fais mal/ce que l'expression régulière devrait être? MISE À JOUR: Je n'ai pas réussi à obtenir l'une des réponses pour faire ce que je veux. Pour ajouter plus d'explications à ce que j'essaie de faire, il y a un morceau de code que j'ai besoin de retirer de plusieurs fichiers, et la séquence ci-dessus est le début de ce code qui doit être supprimé. La fin est similaire:

//}}18420732 
?> 

nouveau, le code à 8 chiffres peut être n'importe quel nombre + séquence de lettres. J'essaie d'utiliser awk avec

/<string1>/,/<string2>/ 

pour trouver la gamme de lignes entre. Ainsi, par exemple en utilisant l'une des réponses données + mon interprétation de ce pour la deuxième ligne, je mets cela en ligne de commande:

awk {/<\?php\n\/\/\{\{([:alnum:]{8})/,/\/\/\}\}([:alnum:]{8})\n\?/} index.php 

et je reçois cette réponse:

-bash: syntax error near unexpected token `(' 

Voici un autre exemple de quelque chose que j'ai essayé + résultat.

awk /<\?php\n\/\/\{\{[:alnum:]{8}/,/\/\/\}\}[:alnum:]{8}\n\?>/ index.php 
-bash: ?phpn//{{[:alnum:]{8}/,///}}[:alnum:]{8}n?/: No such file or directory 

des suggestions?

Répondre

2

Essayez-:
/<\?php\s*\/{2}\{\{(\w{8})/i

+0

Que fait la partie \ s *? Est-ce une autre façon de dire "nouvelle ligne"? – Kristen

0

Quelque chose comme ceci:

<\?php\s\/\/\{\{[0-9]{8}

1

Votre regex:

"< \/php/n // \ { \ {[: alnum:] {8} "

Quel est le problème:

  • Citant - une expression régulière dans la plupart des langues doit commencer et se terminer par un/caractère, pas de guillemets.
  • L'utilisation inutile/avant php
  • Utiliser/au lieu de \ avant la n (pour nouvelle ligne correspondant)
  • pas échapper aux/personnages qui sont dans votre texte, puisque c'est un caractère spécial

La solution:

  • /< \ php \ n \/\/\ {\ {([: alnum:] {8})/
  • Les caractères/ont été échappés, la barre oblique avant n a été corrigée et la paranthesis entoure la partie "[: alnum:] {8}". Les parenthèses sont pour que le code à 8 chiffres soit capturé dans la variable $ 1 que vous pouvez ensuite utiliser dans votre code.
Questions connexes