我正在用C#中的超链接替换文本。这里的问题是链接有一个问号
案例1:没有问题
输入: ASAss123
输出:ASAss123
案例2:这里的问题
输入:ASAsq123
产出:ASAsq123 123“>ASAsq123 123
(注: ASAss123的第一次出现是超链接,被替换为http://stack.com/temp/test?order=sam&identifier=<a href=,第二次出现只是纯文本)
优先输出:ASAsq123
我怎样才能纠正这个问题。这里的代码供您参考:
mailItem.HTMLBody = Regex.Replace(
mailItem.HTMLBody,
"(?<!http://stack.com/temp/test?order=sam&identifier=)ASA[a-z][a-z][0-9][0-9][0-9](?!</a>)",
"<a href=\"http://stack.com/temp/test?order=sam&identifier=$&\">$&</a>");这里的问题是"?“在第二个论点中找到的。如果我去掉这个"?“在第二次和第三次辩论中,这都是非常好的。
但是我不能去掉"?",因为URL需要它才能起作用。我该如何解决这个问题?
我试着用逃逸序列\?C夏普说逃逸序列不被识别.
发布于 2011-07-01 16:43:43
你需要这样逃跑:
\\?你要逃跑吗?在regex中,但是还需要在c#字符串中转义。
发布于 2011-07-01 16:10:10
看起来您需要像test?一样转义test\?,所以它并不意味着可选的t。
发布于 2011-07-01 16:44:14
C#不识别序列\?,因为它是正则表达式,而不是C#序列。
为了防止C#试图识别字符串中的转义序列,并使C#像对待任何其他字符一样对待您的\?,您必须在字符串前加上@:
mailItem.HTMLBody = Regex.Replace(
mailItem.HTMLBody,
@"(?<!http://stack.com/temp/test?order=sam&identifier=)ASA[a-z][a-z][0-9][0-9][0-9](?!</a>)",
"<a href=\"http://stack.com/temp/test?order=sam&identifier=$&\">$&</a>");https://stackoverflow.com/questions/6550412
复制相似问题