C# 中的条件正则表达式问题

发布于 2024-11-19 06:31:15 字数 1149 浏览 3 评论 0原文

我想匹配模式 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]

例如:ASAsq96ASApt66

更换前应满足以下条件应该出现

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\\~\\!\\@\\#\\$\\%\\^\\&amp;
\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?)
(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]

Eg:ASAsq96 or ASApt66

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

燃情 2024-11-26 06:31:15

您尝试将一堆不同的条件组合到一个正则表达式中是否有充分的理由?我会对每个条件有一个单独的表达式。这将使您的模式(和逻辑)更具可读性。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文