C# 中的条件正则表达式问题
我想匹配模式 ASA[az][az][0-9][0-9] 并将其替换为嵌入的超链接 http://www.stack.com?order=ASA[az][az][0 -9][0-9] 并将其显示为 ASA[az][az][0-9][0-9]
更换前应满足以下条件应该出现
1. 如果该模式出现在任何 href 链接中,则不应被替换
<ahref="samplesample?=ASAsq96\%#');"</a>
2. 如果该模式出现在任何 http:// 链接中,则不应被替换
http://www.test.com/ASA[a-z][a-z][0-9][0-9]/example
http://www.stack.com/ASA[a-z][a-z][0-9][0-9]
3. 但是,该模式应该是如果它只存在于特定的范围内则被替换类型 4 的超链接。
http://replaceme/ASA[a-z][a-z][0-9][0-9]
外部的所有其他现有模式均应替换。
此处的正则表达式完全满足条件 2 和 4。如何将条件 1 和 3 合并到此正则表达式中。我正在使用 HTML 正文来处理正文。
mail.HTMLBody = Regex.Replace(mail.HTMLBody,
"(?<!http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&
\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?)
(ASA[a-z][a-z][0-9][0-9])(?!</a>)",
"<a href=\"http://www.stack.com?order=$&\">$&</a>");
I want to match a pattern ASA[a-z][a-z][0-9][0-9] and replace them with embedded hyperlinks http://www.stack.com?order=ASA[a-z][a-z][0-9][0-9] and display it as ASA[a-z][a-z][0-9][0-9]
The following conditions should be met before replacement should occur
1.The pattern should not be replaced if it occurs within any href link
<ahref="samplesample?=ASAsq96\%#');"</a>
2.The pattern should not be replaced if it occurs within any http:// link
http://www.test.com/ASA[a-z][a-z][0-9][0-9]/example
http://www.stack.com/ASA[a-z][a-z][0-9][0-9]
3.But, the pattern should be replaced if it only exists within a specific hyperlink of type
http://replaceme/ASA[a-z][a-z][0-9][0-9]
4.All other existing patterns outside should be replaced
The regex here perfectly satisfies conditions 2 and 4. How can I incorporate conditions 1 and 3 into this regex. I am using HTML body to process the body.
mail.HTMLBody = Regex.Replace(mail.HTMLBody,
"(?<!http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&
\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?)
(ASA[a-z][a-z][0-9][0-9])(?!</a>)",
"<a href=\"http://www.stack.com?order=amp;\">amp;</a>");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您尝试将一堆不同的条件组合到一个正则表达式中是否有充分的理由?我会对每个条件有一个单独的表达式。这将使您的模式(和逻辑)更具可读性。
Is there a good reason why you're trying to combine a bunch of different conditions into a single regular expression? I'd have a separate expression for each condition. This will make your pattern (and logic) a lot more readable.