2011-05-27 24 views
1

我有一段代碼,我需要能夠快速找到幾個不同的文件。它的形式如下:如何將其作爲正則表達式編寫?

<?php 
//{{56541616 

其中8位數字可以是任何數字和字母序列。我想使用正則表達式來查找代碼,但我仍然對它們不熟悉,而且這很複雜,它會拋出我。這是我爲正則表達式提出的,但它似乎不起作用。

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

對我在做什麼錯的任何建議/實際正則表達式應該是什麼?

更新:我一直無法獲得任何我想要的答案。爲了給我想要做的更多的解釋,我需要從幾個文件中刪除一段代碼,上面的序列是需要刪除的代碼的開始。然後結束是類似的:

//}}18420732 
?> 

再次,該8位代碼可以是任何數字+字母序列。我試圖用awk與

/<string1>/,/<string2>/ 

找到它們之間的行範圍。因此,例如使用+第二行我的這種解釋給出的答案之一,我把這個到命令行:

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

,我得到這樣的響應:

-bash: syntax error near unexpected token `(' 

這裏的我試過的另一個例子+結果。

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

有什麼建議嗎?

回答

2

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

+0

\ s *部分是做什麼的?這是另一種說「新行」的方式嗎? – Kristen 2011-05-27 22:17:20

0

事情是這樣的:

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

1

你的正則表達式

「< \/PHP/N // \ { \ {[:alnum:] {8}「

什麼是錯

  • 報價 - 在大多數語言正則表達式必須開頭和/字符,而不是引號結束。
  • 不必要使用/ PHP之前
  • n個前使用/,而不是\(匹配行)
  • 沒有逃脫/字符在你的文字,因爲這是一個特殊的字符

溶液

  • /< \ PHP \ n \/\/\ {\ {([:alnum:] {8})/
  • /字符已被轉義,n之前的斜線改正,paranthesis包圍「[:alnum:] {8}」部分。假設是,8位代碼將被捕獲到變量$ 1中,然後您可以在代碼中使用它。