阿罗哈,
我需要匹配page.aspx?cmd=Show&id=
但不匹配http://random address/page.aspx?cmd=Show&id=
现在我只是用strContent.Replace("page.aspx?cmd=Show&id=", "page.aspx/Show/");
进行简单的休息替换,但为了避免上述情况,我认为我需要转移到正则表达式。
编辑抱歉我的细节有点短暂当前的替换有效,因为我没有考虑到被修改的地址应该只是相对地址,而不是绝对地址。我需要捕获与page.aspx?cmd=Show&id=
匹配的所有相对地址,并将该字符串转换为page.aspx/Show/
。
.StartsWith
和^
无法正常工作,因为我查找的字符串是完整的html页面。所以我需要能够转换:
<p>Hello, please click <a href="page.aspx?cmd=Show&id=10">here</a>.</p>
进入
<p>Hello, please click <a href="page/Show/10">here</a>.</p>
但不转换
<p>Hello, please click <a href="http://some address/page.aspx?cmd=Show&id=10">here</a>.</p>
我在我的示例中使用了A标记,但我也需要转换IMG标记。
谢谢!
答案 0 :(得分:3)
我建议使用ParseQueryString
而不是正则表达式,因为即使参数的顺序不同,这也会有效。
否则,您可以使用string.StartsWith
来测试是否匹配。
如果你想使用正则表达式,你需要使用^
并且还要转义字符串中的所有特殊字符:
Regex regex = new Regex(@"^page\.aspx\?cmd=Show&id=");
如果你不想自己逃避角色,你可以Regex.Escape
为你做这件事:
string urlToMatch = "page.aspx?cmd=Show&id=";
Regex regex = new Regex("^" + Regex.Escape(urlToMatch));
答案 1 :(得分:0)
您可以使用^来查找行首。
...或者你可以很酷并使用负面的后视(?<!http://.*?/)
。 ;)
请参阅http://www.geekzilla.co.uk/View6BD88331-350D-429F-AB49-D18E90E0E705.htm