Регулярное выражение для извлечения данных между 3-8-значным числом и 3-буквенным текстом (casplock text)

#c# #.net #regex #rpa #uipath

#c# #.net #регулярное выражение #rpa #uipath

Вопрос:

Я хотел извлечь данные между 3-8-значным числом и 3-буквенным текстом (casplock text), используя регулярное выражение. Любая идея будет высоко оценена, спасибо.

Данные (которые представляют собой строку)

«29.06.2010 B QM 02004946 ТЕСТ НА ИПОТЕКУ TRU

03/10/20 BC 2440720 BK ТЕСТОВОГО XPN

07.03.2010 B QZ 00060298 CPORT RU TRU»

ВЫВОД должен быть: ТЕСТ НА ИПОТЕКУ, BK ТЕСТА и CPORT RU

Комментарии:

1. Это опечатка 0829/20 ? должно ли это быть 08/29/20 ?

2. да, просто опечатка

3. Попробуйте это: d{3,8}s (?<capture>.*)s [A-Z]{3}$ . ?<capture> Является необязательным и может использоваться для обозначения соответствия, которое вы хотите иметь.

4. Я пробовал это, но он не получил правильных данных

5. В соответствии с этим все ваши примеры будут работать так, как ожидалось: regex101.com/r/kuE6dS/1

Ответ №1:

Может быть, это

  • Положительный вид с нулевой шириной сзади
  • Положительный прогноз нулевой ширины

Обновить

 var pattern = @"(?<=d{3,8}s).*(?=s[A-Z]{3})";

var input = @"06/29/20 B QM 02004946 MY HELLO WORLD XLS
08/29/20 B QM 0948264 MY UI PATH LMN
08/29/20 B QM 435 MY SAMPLE DATA LMN
06/29/20 B QM 123 MY HELLO WORLD XLS";

var results = Regex
       .Matches(input, pattern, RegexOptions.Multiline)
       .Cast<Match>()
       .Select(x => x.Value);

Console.WriteLine(string.Join(", ", results));
  

Вывод

 MY HELLO WORLD, MY UI PATH, MY SAMPLE DATA, MY HELLO WORLD
  

Полная демонстрация здесь


Оригинал

Шаблон

 (?<=d{3,8}s).*(?=s[A-Z]{3}$)
  

Использование

 var pattern = @"(?<=d{3,8}s).*(?=s[A-Z]{3}$)";

var strings = new List<string>()
{
   "06/29/20 B QM 02004946 MY HELLO WORLD XLS",
   "08/29/20 B QM 0948264 MY UI PATH  LMN",
   "08/29/20 B QM 435 MY SAMPLE DATA   LMN"
};

var results = strings.Select(x => Regex.Match(x, pattern).Value);

foreach (var result in results)
   Console.WriteLine(result);
  

Вывод

 MY HELLO WORLD
MY UI PATH
MY SAMPLE DATA
  

Полная демонстрация здесь

Комментарии:

1. Я ПРОБОВАЛ ЭТО На UIPATH, РАБОТАЕТ НОРМАЛЬНО.

2. ЭТО НЕ СРАБОТАЛО, КОГДА ОБРАЗЕЦ ВВОДА «29.06.20 B QM 123 MY HELLO WORLD XLS»

3. Я попробовал regex101.com . Выдает ошибку шаблона.

4. @Mr.MarkTawin работает на меня dotnetfiddle.net/1NUhwE

5. это должно быть от 3 до 8 цифр и 3 букв. поэтому следует учитывать