如何选择性地从URL中删除换行符

本文关键字:删除 换行符 URL 选择性 | 更新日期: 2023-09-27 18:29:10

在消息系统中,当消息在一定数量的字符后发布时,会自动添加换行符(这是一种愚蠢的做法,但不幸的是,这是不允许更改的)。这意味着中断会自动插入到URL中,因此长的中断会被拆分,例如:

http://www.stackoverflow.com/some-more-<br/>stuff

当检索到消息时,函数会将链接转换为标签,对于该URL,这会导致:

<a href='http//www.stackoverflow.com/some-more-'>http://www.stackoverflow.com/some-more-</a>stuff

在将<br/>转换为链接之前,我需要删除它。

我已经将消息拆分为空格中的单词,然后遍历每个单词,看看它是否包含"http://"或"www."然后用空字符串替换CCD_ 3。

然而,这只适用于在段落中输入的URL,例如:

URL为http://www.stackoverflow.com

它不适用于带有换行符的URL,例如:

这是网址:

http://www.stackoverflow.com

这里还有一些文本

被切成:

以下是URL:http://www.stackoverflow.comAnd这是更多的文本

因为这个单词中的所有换行符都被删除了(因为我在空格上拆分,所以所有这些都被视为一个单词)。

我想我可以在换行符上进行拆分,但这对第一个例子中输入的段落中的URL不起作用,它也会在任何包含换行符的URL中间进行拆分。

很明显,我只需要找到URL并替换其中的换行符,但我在这方面遇到了真正的麻烦,因为我似乎做不到!

如果我遗漏了任何细节,请随时询问,我会马上回来的。谢谢:)

PS-这是用C#编码的。

如何选择性地从URL中删除换行符

请删除其他答案。

我无法理解你的问题。不,我想我知道。

你可以使用这个正则表达式来查找所有的url,无论它们是否被分成几行:

(?<url>https?://(.|'r'n)*?(=? ))

这将返回名为"url"的捕获组,其中包含您的url,其中包含或不包含换行符。您可以通过(.|''r''n)*获得此信息,它允许查找由(cr,lf)分隔成几行的URL。检查这是否是邮件的行末编码。如果没有,您可以用(.|''n)或其他适合您的情况来更改Growo。

一旦找到URL,就可以删除其中的URL。

您可以使用以下正则表达式进行改进:

(?<url>https?://(.|(?<deleteMe>'r'n))*?(=? ))

deleteMe组捕获url中所有有问题的换行符,因此您可以安全地将它们全部删除。

重要提示:您必须使用多行选项运行regex如果不运行,它将不起作用。

示例文本:

The firs url is http://www.casa.com/aqui.htm and the second is http://www.the
house.com/broken url

匹配:

url: http://www.casa.com/aqui.htm
url: http://www.the'r'nhouse.com/broken

Delete me组匹配粗体''r''n