我需要替换所有匹配的实例,但只能在特定的标签内。正则表达式全部替换一组标签
例如,考虑具有这些标记我需要更换的所有次数内<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