#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 в шаблоне.