2011-07-30 83 views
1

我想要將所有的PHP短標籤替換成完整的標籤。正則表達式查找/替換在記事本+ +

示例說明:

<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> 

所以它並沒有真正當有一行中的多個PHP開始和結束標記工作。

我該如何解決這個問題?謝謝!

+1

記事本+ +正則表達式反正破壞了......:/ – Nightfirecat

回答

1

是的,因爲*運營商是貪婪,並會嘗試匹配一切,直到最後?

查找內容:<?=([^?]*)?>

替換爲:您可以通過在關閉標籤除了?一切配套解決這個問題<?php echo \1; ?>

0

當您使用*,記事本++相匹配的多,因爲它可以,所以你需要告訴它你不想匹配,因此停止,沒有發現整條生產線是什麼:

查找:<?=([^?]*)?>

替換:<?php echo \1; ?>

1

把這個搜索字段:

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

而這在更換現場:

<?php echo \1; ?> 
0

使用*在你的正則表達式使得「貪婪」和你不想要那。你希望第一次出現?>匹配而不是最後一次。另外,字符在正則表達式中是特殊的,所以你也需要逃避它:

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