如何选择性地从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>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