更正正则表达式以识别纯文本URL

时间:2015-01-22 04:41:58

标签: c# regex

我一直在使用以下正则表达式在纯文本文件中查找网址,以便我可以将它们转换为HTML链接。

const string pattern = @"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)";

除了URL中有“#”之外,这似乎工作正常。所以对于这个URL

 http://www.example.com/ckm/OKM.html#showarchetype_1013.1.868_7

网址标识在“#”

处停止

正则表达式需要更改哪些想法才能识别URL?

2 个答案:

答案 0 :(得分:1)

只需在最后的第二个字符类中添加#

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w_-]*)?\??(?:[-\+=&;%@.\w_#]*)#?(?:[.\!\/\\w]*))?)

DEMO

答案 1 :(得分:0)

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w_#-]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)

                                                                                                                        ^^

试试这个。看看demo.Added #上面。

https://www.regex101.com/r/rG7gX4/3