2016-09-02 2 views
-4

Привет У меня есть строки, как ПослеSplit строковые данные Использование Regex в C#

string str=SCAN: SITE: http://www.vividinfotech.com SCAN: DOMAIN: www.vividinfotech.com SCAN: IP: 66.55.155.156 SYSTEM: NOTICE: Running on: ApacheRECOMMENDATIONS: 0: Security Header: X-XSS-Protection MissingRECOMMENDATIONS: 0: We did not find the recommended security header forXSS Protection on your site. 

мне нужно расколоть как SCAN и РЕКОМЕНДАЦИИ ДАННЫЕ следующим образом:

SCAN:

1. http://www.vividinfotech.com

2.DOMAIN: www.vividinfotech.com

3.IP: 66.55.155.156

есть ли способ сделать это

+0

Просьба уточнить ваш вопрос .. каков ожидаемый результат? – eol

+0

Вам нужно * разделить * его или * извлечь * части? –

+0

извлечь указанную часть 1.http: //www.vividinfotech.com 2.DOMAIN: www.vividinfotech.com 3.IP: 66.55.155.156 От СКАН части –

ответ

1

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

 string str = "SCAN: SITE: http://www.vividinfotech.com SCAN: DOMAIN: www.vividinfotech.com SCAN: IP: 66.55.155.156 SYSTEM: NOTICE: Running on: ApacheRECOMMENDATIONS: 0: Security Header: X-XSS-Protection MissingRECOMMENDATIONS: 0: We did not find the recommended security header forXSS Protection on your site."; 
     Match m = Regex.Match(str, @"SCAN: SITE: (.*)SCAN: (DOMAIN:.*)SCAN: (IP: [\d\.]*)"); 
     if (m.Success && m.Groups.Count == 4) 
     { 
      string site = m.Groups[1].Value; 
      string domain = m.Groups[2].Value; 
      string ip = m.Groups[3].Value; 
     } 
+0

Спасибо за вашу помощь –

0

Если вы затухающий более короткий путь, вы можете используйте linq вместо regex. Что-то вроде:

string[] resultsSCAN = str.Split(new string[] { "SCAN: " }, StringSplitOptions.None).Skip(1).Take(3).ToArray(); 
resultsSCAN[resultsSCAN.Count() - 1] = resultsSCAN.Last().Split(new string[] { "SYSTEM: " }, StringSplitOptions.None).First(); 

Я думаю, что это то, что вы хотите.

+0

Спасибо много Решил мою проблему. –