2014-09-10 5 views
0

Я хочу извлечь числа из строки. У меня две строки, как показано ниже.Регулярное выражение в C# для извлечения данных

1_09-Sep-14#200 

Для приведенных выше строк, я использую следующее выражение, но его не работает должным образом, я хочу, чтобы получить 1 после 09-Sep-14, а затем 200.

string S = "1_09-Sep-14#200"; 

foreach (Match m in Regex.Matches(S, "(?<=[_#])(\\d+)(?=[_#])?")) 
{ 
    string s = Convert.ToString(m.Groups[1]); 
} 

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

1_4-11#100 
+0

Как насчет 'Еогеаспа (строка s в ДЕЛЕНИИ ('_', '#')) {...}'? – Corak

+0

Wow, thats более легкий путь ... Я не думал об этом ... – bnil

ответ

1
(?<=[_#]|^)([0-9a-zA-Z-]*)(?=[_#]|$) 

Попробуйте это.

Я включил ^ для захвата первой цифры перед тем _ и $ захватить последнюю цифру после #.

См. Демонстрационную версию.

http://regex101.com/r/nG1gU7/29

+0

Я пробовал, но его не работает, ошибка давая в \ da – bnil

+0

показывая ошибку непризнанной escape-последовательности. – bnil

+0

@ user1650894 try (? <= [_ #] | ^) ([0-9a-zA-Z -] *) (? = [_ #] | $) – vks