2016-03-14 2 views
0

Мне нужна помощь по следующему регулярному выражению в C#. У меня есть заданная строка, которую я пытаюсь выбрать таким образом. Строка из счета-фактуры. Остальным предметом будет купленный предмет.Quick Regex для предложений

510258-350-JDX 84008043942000 Confirmation of Order is mandatory.994007029908500 ItemMaterial NumberDescription64008029908500Order 840780-16742500 
Long text *** Text*** ==> 84008043942000 Confirmation of Order is mandatory.994007029908500 
ItemMaterial NumberDescription64008029908500Order 840780-16742500 


510258-350JDFT8 84008043942000 Confirmation of Order is mandatory.994007029908500ItemMaterial NumberDescription94008029908500Order 840080-16742500 Long text 232 *** Text*** ==> 84008043942000 Confirmation of Order is mandatory.994007029908500 
ItemMaterial NumberDescription64008029908500Order 840080-16742500 

но мой текущий способ не работает. Я хочу выбрать их и удалить из строки. Числа в примере могут измениться.

string r2 = raa.Replace(r1, ""); 
string rgconfirm =""; 
string rgorder =""; 

if (r2.Contains("Confirmation")) { 
    rgconfirm = Regex.Match(r2, @"(\d{14} Confirmation)").Groups[0].Value; 
    if (r2.Contains("-")) { 
     rgorder = Regex.Match(r2, @"(Order \d{6}-*+\d{8})").Groups[0].Value; 
    } 
} 

string check1 = rgconfirm + "(.*?)" + rgorder; 
var toreplace = Regex.Match(r2, check1).Groups[0].Value; 

if (toreplace.Length > 2) { 
    r2 = r2.Replace(toreplace, ""); 
} 
+0

Просьба указать точно, какой результат вы ищите. –

+1

Обратите внимание, что Группы [0] - это полное совпадение. Группы [1] - первая группа захвата. [Источник:] (https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.match.groups (v = vs.110) .aspx) "первый элемент объекта GroupCollection (элемент в индексе 0), возвращаемый свойством Groups, содержит строку, которая соответствует всему шаблону регулярного выражения. Каждый последующий элемент, начиная с индекса один вверх, представляет захваченную группу « – Quantic

+1

. Примеры входов и выходов с ожидаемыми выходами были бы полезными. –

ответ

0

Если вы просто хотите номер перед текстом «подтверждение заказа является обязательным», вы можете использовать следующий Regex:

(?<==>\s)\d+?\s*Confirmation of Order is mandatory.+?ItemMaterial NumberDescription\d+?Order\s\d+-?\d+ 

Если ваш шаблон всегда остается теми же, приведенное выше выражение регулярного выражения должно сработать. Используйте вышеуказанный шаблон регулярного выражения с опцией RegexOptions.Singleline.

+0

Я хочу текст следующим образом: 84008043942000 Подтверждение заказа является обязательным.994007029908500 ПунктМатериал NumberDescription64008029908500Order 840780-16742500 –

+0

OK. Просто обновил свой ответ. –

+0

Обновлено снова. Кроме того, позаботьтесь об использовании опции 'RegexOptions.Singleline'. –

Смежные вопросы