Остановите регулярное выражение в \ n - PullRequest
0 голосов
/ 15 января 2019

Мне нужно добавить теги bbcode к URL-адресам, на которых нет тегов. В настоящее время я использую регулярные выражения, чтобы найти их, но у меня проблемы с некоторыми случаями. Вот случаи, на которых я тестирую:

www.example.com                                                 //OK
http://example.com                                              //OK
http://www.example.com                                          //OK
http://www.example.com/test/                                    //OK
http://www.example.com/test/image.jpg                           //OK
www.example.com\nSome random text                               //not working, should find www.example.com only
Some random text\nhttp://www.example.com                        //OK
http://example.com\nSome random text                            //not working, should find http://example.com only
http://www.example.com\nSome random text                        //not working, should find http://www.example.com only
Some random text\nhttp://www.example.com\nSome random text      //not working, should find http://www.example.com only
http://www.example.com\nhttp://www.example.com/test/image.jpg\n //not working should find both http://www.example.com and http://www.example.com/test/image.jpg
[IMG]http://www.example.com/test/image.jpg[/IMG]                //OK
[URL]http://www.example.com[/URL]                               //OK
[url=http://www.example.com]Domain[/url]                        //OK
[url=http://www.example.com]http://www.example.com[/url]        //OK

Я использую Notepad ++ для тестирования и регулярное выражение:

(?:(?<!(\[\/url\]|\[\/url=)))(((https?|ftps?|ircs?):\/\/\S+)|(www\.\S+))(?:(?<![[:punct:]])|(?<=\/))(\s|\.?$)

Так что, я думаю, самая большая проблема, с которой я столкнулся, это то, что регулярное выражение не останавливается на \ n-символе.

...