ENUM 记录的正则表达式替换

发布于 2024-08-07 13:06:29 字数 1120 浏览 1 评论 0原文

如何在 C# 中将匹配组中的 1 个正则表达式替换为另一个正则表达式?

我需要处理 ENUM DNS 记录,其中记录的前半部分是应用于查找值的正则表达式,后半部分是使用第一个记录的正则表达式。

用于在 +18001234567 上查找的 ENUM 记录示例

!^\+1800(.*)$!sip:1641641800\[email protected]!

单独的正则表达式由 ! 分隔 sip

^\+1800(.*)$
sip:1641641800\[email protected]

应用这两个表达式的正确结果是:

:[电子邮件受保护]

我可以通过迭代匹配并使用粗略的字符串搜索和替换来做到这一点,但我希望有更好的方法。我很确定在 Perl 和其他语言中我可以做类似的事情:

"+18001234567" =~ s/^\+1800(.*)$/sip:1641641800\[email protected]/

How do I susbtitute in matched groups from 1 regular expression into another regular expression in C#?

I need to process an ENUM DNS record where the first half of the record is a regular expression to apply to the lookup value and the second half is a regular expression that uses the matches from the first.

Example of an ENUM record for a lookup on +18001234567

!^\+1800(.*)$!sip:1641641800\[email protected]!

The separate regular expressions are delimited by the ! character and are:

^\+1800(.*)$
sip:1641641800\[email protected]

The correct result of applying the two expressions is:

sip:[email protected]

I can do it be iterating through the matches and using a crude string search and replace but I'm hoping there is a better way. I'm pretty sure in Perl and other languages I could do somehting like:

"+18001234567" =~ s/^\+1800(.*)$/sip:1641641800\[email protected]/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

无远思近则忧 2024-08-14 13:06:29

我最终做了一个粗略的字符串替换,将 \n 替换为 ${n} 。

Regex.Replace(enumSubstitution, @"\\(?<digit>\d)", @"${${digit}}");

I ended up doing a crude string substitution replace \n with ${n}.

Regex.Replace(enumSubstitution, @"\\(?<digit>\d)", @"${${digit}}");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文