#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 букв. поэтому следует учитывать