当前位置 : 主页 > 编程语言 > c++ >

c#regex用于查找和替换匹配文本的重用部分

来源:互联网 收集:自由互联 发布时间:2021-06-23
我需要搜索并替换长文本字符串.我想找到看起来像这样的断开链接的所有实例: a href="http://any.url.here/%7BlocalLink:1369%7D%7C%7CThank%20you%20for%20registering"broken link/a 并修复它,使它看起来像这样
我需要搜索并替换长文本字符串.我想找到看起来像这样的断开链接的所有实例:

<a href="http://any.url.here/%7BlocalLink:1369%7D%7C%7CThank%20you%20for%20registering">broken link</a>

并修复它,使它看起来像这样:

<a href="/{localLink:1369}" title="Thank you for registering">link</a>

文本字段中可能存在许多这些断开的链接.我的困难在于如何重用匹配的ID(在本例中为1369).在内容中,此ID从链接更改为链接,URL和链接文本也是如此.

谢谢,

大卫

编辑:为了澄清,我正在编写C#代码来运行数百个长文本字段来修复其中的断开链接.每个单独的文本字段都包含html,其中可以包含任意数量的断开链接 – 正则表达式需要全部找到它们并用正确的链接版本替换它们.

带上一粒盐,HTML和正则表达式不能很好地结合在一起:

(<a\s+[^>]*href=")[^"%]*%7B(localLink:\d+)%7D%7C%7C([^"]*)("[^>]*>[^<]*</a>)

当应用于您的输入并替换为

$1/{$2}" title="$3$4

产生以下内容:

<a href="/{localLink:1369}" title="Thank%20you%20for%20registering">broken link</a>

这与单独的正则表达式一样接近.您需要使用MatchEvaluator delegate从替换中删除URL编码.

网友评论