2015-12-23 3 views
1

Я изменяю приложение MVC, над которым я должен управлять ре-архитектором (или я бы). Существует источник данных, который является документом XML, и приложение использует RegEx для фильтрации документа. Один фильтра для конкретного узла НЕ РАВНО к определенному числу (7) и RegEx используются является:RegEx, чтобы исключить два специальных номера

[^7] 

Теперь мне нужно фильтровать основанный на тот же узел, не равного двум номеров (7 и 30). Я пробовал несколько вещей, но никто из них не работал (я не специалист RegEx, больше как новичок).

У кого-нибудь есть решение для этого?

+1

не хватает информации. Необходимо больше информации о содержимом данных, образцах того, что должно и не должно совпадать, а также о том, что вы пробовали, что не сработало. (Если вы * попробовали несколько вещей *, вы должны включить хотя бы пару из них. Если вы не можете этого сделать, вы не пробовали * Действительно, учитель, я сделал домашнее задание. ел! *.) –

+0

Это запись в файле web.config. Код использует запись RegEx для создания нового объекта Regex (Regex regexDepartment = new Regex (stringFromWebConfig, RegexOptions.ignoreCase);), тогда существует выражение Linq для выбора соответствующих элементов в документе XML (от e в employeeXMLDoc(), где regexDepartment .IsMatch (e.Element («Отдел»). Значение. Это работает с [^ 7], но не с [^ 7 | 30] или [^ (7 | 30)] - все догадки, как я уже сказал, я новичок ... – jaybird

+0

На простом английском языке я пытаюсь выбрать сотрудников из XML-документа, которые находятся во всех отделах EXCEPT 7 и 30. – jaybird

ответ

3

Вы можете использовать отрицательный предпросмотр, чтобы исключить 30/7:

Example Here

\b(?!30\b|7\b)\d+\b 

Это по существу соответствует одному или более цифр, символ (ы), за исключением, если они предшествуют 30\b или 7\b.

+1

Почему бы просто не написать чек вроде 'if (! match ("/\ b (30 | 7) \ b/", string)) ...' – hek2mgl

+0

@ hek2mgl Да, это определенно было бы лучше. –

1

Вместо [^7] вы можете использовать

(?!7|30) 
+1

Помните разделители, иначе ваш риск не соответствует номерам, например '777' или' 130' –

+0

, но это звучит как он хочет .. только 7 и 30. –

+1

Точно: 7 не должно совпадать, но 777 должны быть сопоставлены. Ваше регулярное выражение не соответствует 777. –

Смежные вопросы