получить подходящие подстроки из длинной строки Regex - PullRequest
1 голос
/ 15 марта 2019

У меня есть такая строка

   jasabcasjlabcdjjakabcdehahakabcdef...//any number of characters

Я хочу регулярное выражение, которое возвращает эти подстроки

  [abc],[abcd],[abcde],[abcdef],....

Я написал регулярное выражение примерно так

 @"abc(?=[d-z])+

Но это не приносит того, что я хочу, я пытался в течение некоторого времени, пожалуйста, помогите

Спасибо

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Линк подход

string input = "jasabcasjlabcdjjakabcdehahakabcdef";
string[] result = Regex.Split(input, @"(?=abc)")
                       .Select(x => string.Concat(x.TakeWhile((y, i) => y == ('a' + i))))
                       .Where(x => !string.IsNullOrEmpty(x))
                       .ToArray();

https://dotnetfiddle.net/tahJ4U

1 голос
/ 15 марта 2019

Подход с foreach -циклом

string input = "jasabcasjlabcdjjakabcdehahakabcdef";

List<string> result = new List<string>();
string temp = string.Empty;

foreach(char c in input)
{
    if(c == 'a' && temp == string.Empty)
    {
        temp = string.Empty;
        temp += c;                
    }
    else if(c - 1  == temp.LastOrDefault())
    {
        temp += c;                  
    }
    else if (!string.IsNullOrEmpty(temp))
    {
        if (temp.StartsWith("abc"))
        {
            result.Add(temp);
        }
        temp = string.Empty;
    }
}
if (temp.StartsWith("abc"))
{
    result.Add(temp);
}

https://dotnetfiddle.net/I4t9Cq

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