Как написать регулярное выражение для сопоставления строки, не содержащей слова?

Возможный дубликат:
Обычный выражение для сопоставления строки, не содержащей слова?

Чтобы не соответствовать набору символов, я бы использовал, например. [^\"\\r\\n]*

Теперь я хочу не соответствовать фиксированному набору символов, например. "|="

Другими словами, я хочу сопоставить: ( не ", не \r, не \n и не |= ).

EDIT: я пытаюсь изменить регулярное выражение для анализа данных, разделенных разделителями. Решение с одним разделителем я получил из парсера CSV, но теперь я хочу чтобы расширить его, включив в него многосимвольные разделители. Я не думаю, что просмотр вперед будет работать, потому что я хочу потреблять, а не просто утверждать и отбрасывать совпадающие символы.


person Peet Brits    schedule 30.06.2010    source источник
comment
@ Джордж, как это точная копия? Да, оба разрешаются с отрицательным просмотром вперед, но мне требовалось несколько совпадающих последовательностей.   -  person Peet Brits    schedule 27.07.2012


Ответы (1)


Я разобрался, должно быть: ((?![\"\\r\\n]|[|][=]).)*

Полное регулярное выражение, измененное по ссылке на анализатор CSV в исходном сообщении, будет: ((?<field>((?![\"\\r\\n]|[|][=]).)*)|\"(?<field>([^\"]|\"\")*)\")([|][=]|(?<rowbreak>\\r\\n|\\n|$))

Это будет соответствовать любому количеству символов ( не ", не \r, не \n и не |= ) или строке в кавычках, за которой следует ( "|=" или конец строки )

person Peet Brits    schedule 30.06.2010