Нужен шаблон регулярных выражений для соответствия ‘—‘

#c# #regex

#c# #регулярное выражение #Регулярное выражение

Вопрос:

Вот некоторые данные

  36    1   36   0ef6c0   id     N8   Online      FC  F-Port  50:05:07:68:01:80:fc:ae 
 37    1   37   0ef680   id     N8   Online      FC  F-Port  50:05:07:68:01:80:fa:1b 
 38    1   38   0ef640   id     N8   Online      FC  F-Port  50:05:07:68:01:80:fa:2e 
  39    1   39   0ef600   id     N8   Online      FC  F-Port  50:05:07:68:01:80:f9:ca 
86    2   22   0eea40   --    --   Online      VE  VE-Port  10:00:00:05:33:ea:da:4d "replsa2v" (downstream)
87    2   23   0eea00   --    --   Offline     VE  Disabled (Persistent) 
88    2   24   0ee9c0   --    --   Offline     VE  Disabled (Persistent) 
  

Это регулярное выражение соответствует первым 4 строкам.

 (?<index>d )s (?<slot>d )s (?<port>d )s (?<address>w{6,})s b(id|cu)bs (?<speed>wd )s b(?<state>w )s (?<protocol>S )s (?<type>S )s(?<extra>.*)
  

Этот соответствует последним 3

 (?<index>d )s (?<slot>d )s (?<port>d )s (?<address>w{6,})s [-]{2}s [-]{2}s b(?<state>w )s (?<protocol>S )s (?<type>S )s(?<extra>.*)
  

Мне бы хотелось иметь один шаблон, который соответствовал бы всем. Код работает, но он был бы чище и немного быстрее, если бы я выполнял одно совпадение. Лучшее, что я могу сделать с одним шаблоном, — это сопоставить первую половину первых 4 строк ввода и последнюю половину последних 3-х — в основном все до первого ‘—‘ и после последнего.

Комментарии:

1. Я не знал, что существуют фильтры против слова «Справка». Helop был опечаткой, а не преднамеренным.

2. Отредактированный заголовок намного лучше, хотя он пока не объясняет, о чем вы спрашиваете. Сопоставление довольно просто. Вы хотите сделать больше, не так ли? (Здесь часто случается ошибка в написании для обхода фильтров.) Я удалю комментарий, так как он все равно больше не нужен. 🙂

Ответ №1:

эта работа для меня:

 (?<index>d )s 
(?<slot>d )s 
(?<port>d )s 
(?<address>w{6,})s 
(id|cu|-{2})s 
(?<speed>wd |-{2})s 
b(?<state>w )s 
(?<protocol>S )s 
(?<type>S )s
(?<extra>.*)
  

Комментарии:

1. Спасибо. Глядя на ваш, я вижу, что моя ошибка заключалась в том, что я оставил теги b b в шаблоне.