2014-10-03 3 views
0

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

из

;010263563=2119? 

и 0267829

из

%00000026782904?;010267829=4119? 

(Must быть одним и тем же регулярным выражением).

+0

Как и связаны? –

+0

Игнорируйте все пресечки с запятой и разделите первые 2 цифры? –

+0

'' 010', '= 2119','% 00000' и ​​'04? ;, 010267829 = 4119?' Постоянные части? Они меняются? Каким будет человекоязычное описание того, как собираются данные? Что-то вроде «строка начинается с трех чисел, а затем 10, что меня интересует, а затем ...» –

ответ

2

Начинать с 3-го символа после запятой и принимать 7 символов.

;..(\d{7}) 

или более общий:

;..(.{7}) 

Или согласно комментарий: "Для того, чтобы уточнить символы взять две цифры"

;\d\d(\d{7}) 
+0

Он не сказал, что символы, которые нужно взять, это цифры: p – Rawling

+0

@Rawling: Правильно, ответ отредактирован :-) – Toto

+0

Чтобы прояснить символы, которые нужно взять, это цифры. – scotru

1

Ниже приведенное регулярное выражение должно состоять из 7 цифр, которым должно предшествовать ;, любые два символа.

(?<=;.{2})\d{7} 

Код:

String input = @";010263563=2119? 
%00000026782904?;010267829=4119?"; 
Regex rgx = new Regex(@"(?<=;.{2})\d{7}"); 
foreach (Match m in rgx.Matches(input)) 
Console.WriteLine(m.Groups[0].Value); 

IDEONE

Выход:

0263563 
0267829 
1

Ну, вам это нужно:

;\d{2}(\d+) 

Первая группа будет содержать нужный номер.

1
;[\S]{2}([\S]{7}) 

Поскольку вы сказали символов и не числа, но он будет работать в любом случае

1

Для правил, которые, что точный (начало 3 символов после ;, то следующие 7), вы можете использовать простую подстроку:

string s = "%00000026782904?;010267829=4119?"; 
var pos = s.IndexOf(';'); 
var number = s.Substring(pos+3, 7); 

И, конечно же, тест действительно ли нашла, что IndexOf;

0

Предполагая, что регулярное выражение не является абсолютным требованием, вы могли бы использовать:

var input = "%00000026782904?;010267829=4119?"; 

// output will be: 0267829 
var digits = input.SkipWhile(x => x != ';').Skip(3).Take(7).ToArray(); 
var output = new string(digits); 
Смежные вопросы