我需要替換所有匹配的實例,但只能在特定的標籤內。正則表達式全部替換一組標籤
例如,考慮具有這些標記我需要更換的所有次數內<body>...</body>
HTML頁說:
{embed=xxx}
到
<a href="xxx">xxx</a>
我能做到這一點整個頁面使用類似(嘗試#1):
match={embed=(.*?)}
replace=<a href="$1">$1</a>
但是這代替了頁面的所有部分,甚至是我不希望它被替換的部分,尤其是頭部。
當我嘗試添加上述周圍像這樣定義(嘗試#2)的匹配條件:
match=(<body.*?)(?:({embed=(.*?)})+)(.*?)(</body)
replace=$1<a href="$3">$3</a>$4$5
如果只替換第一個項目。
所以,如果我是用這個示例文本數據搜索:
<head>
{embed=zzz}
</head>
<body>
{embed=aaa}<br />
{embed=bbb}<br />
{embed=ccc}<br />
</body>
我得到:
<head>
{embed=zzz}
</head>
<body>
<a href="aaa">aaa</a>aaa<br />
{embed=bbb}<br />
{embed=ccc}<br />
</body>
理想我想輸出是:
<head>
{embed=zzz}
</head>
<body>
<a href="aaa">aaa</a><br />
<a href="bbb">bbb</a><br />
<a href="ccc">ccc</a><br />
</body>
我知道我可能是因爲複雜的東西,但正則表達式就像我的大腦裏的水 - 他們只是不混合。
感謝您的信息。當我在.NET中編寫我的應用程序時,我的正則表達式測試程序應用程序不能用.NET編寫,因爲我沒有看到這種行爲。 – NFX 2010-06-22 16:44:33