2011-07-30 17 views
1

すべてのphpショートタグを完全なものに置き換えたいと思います。Notepad ++の正規表現の検索/置換

例のソーステキスト:

<a href="<?=$baseurl?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ?>></a> 

期待最終結果:

<a href="<?php echo $baseurl; ?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ?>></a> 

私は、この限りで得た:と交換<?=(.*)?>

が何を検索<?php echo \1; ?>

しかし、結果は次のとおりです。

<a href="<?php echo $baseurl?>random/<?php echo $offset+$per_page; ?>" class="arrows right" <?php echo $displayright; ; ?>></a> 

1行に複数のPHPの開始タグと終了タグがあるときに、それは実際に動作しません。

これを修正するにはどうすればよいですか?ありがとう!

+1

メモ帳++正規表現はとにかく壊れています...: – Nightfirecat

答えて

1

はい、*オペレータは貪欲であり、最終?にすべてを一致しようとしますので。あなたは、終了タグで?以外のすべてを照合することによってこの問題を解決することができます<?=([^?]*)?>

がで置き換えます:<?php echo \1; ?>

0

あなたは*を使用すると、メモ帳++はあなたので、それができる限り一致する

は、どのような検索しますそう、それは全体のラインを見つけることなく停止し、あなたが一致したくないものを、それを伝える必要があります:

検索:<?=([^?]*)?>

置き換え:を交換用のフィールドに

<\?=([^?]+)\?> 

そして、この:

1

フィールドを検索するプット、これを使用して

<?php echo \1; ?> 
0

*あなたの正規表現では、それは「貪欲」になり、あなたはしたくありませんそれ。あなたは?>の最初の出現をマッチさせ、最後の出現を望みません。また、?あなたがそれをエスケープする必要があるので、文字は正規表現では特別です:

<\?=([^?]+)\?> 
関連する問題