C# Regex находит только одно совпадение - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть шаблон регулярных выражений, который извлекает URL и текст ссылки, чтобы превратить пользовательский тег в тег. Когда я пробую свой шаблон на онлайн-контролере, он находит 4 совпадения, но когда я запускаю мой код, c# находит только одно совпадение.

 Regex rgx = new Regex(@"(\[)+(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)( )(.)+(\])");

Запись похожа на

 [http://facebook.com/ LinkText]

[http://youtube.com/ LinkText]

[http://instagram.com/ LinkText]

[https://stackoverflow.com/users/1131979/cagri-d-kaynar LinkText]

My Код

  Regex rgx =
 new Regex(@"(\[)+(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)( )(.)+(\])");
                    foreach (Match match in rgx.Matches(entry))
                    {

                        var matchv = match.Value;
                       /*extract url and Link text from match value*/
                        var bknz =
                            String.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", cc[0], cc[1]);
                        entry = rgx.Replace(entry, bknz);
                    }

Что случилось с моим кодом? Я пропустил флаг или ste?

1 Ответ

0 голосов
/ 17 апреля 2020

Я заменяю \ r \ n на <br /> перед совпадением с шаблоном Regex, и это приводит к получению одного совпадения. Я делаю замену после проверки регулярных выражений. Сейчас работает хорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...