2014-11-20 3 views
0

Я пытаюсь написать RegEx, чтобы найти все строки, содержащие хотя бы один строчный символ.Visual Studio «Найти в файлах» RegEx ведет себя неожиданно

Вот что у меня есть: "(\\"|[^"]|"")*?[a-z](\\"|[^"]|"")*?"

Хотя это не идеальные и будет соответствовать материалу не должен, моя реальная проблема заключается в том, что она также соответствует заглавной-только строке. Как ни странно, когда я использую «Быстрый поиск» в файле, он работает. В обоих случаях у меня включен параметр «Случай соответствия».

Что я делаю неправильно?

+1

вы могли бы предоставить экс? –

ответ

0

Я нашел причину, по которой «Найти в файлах» и «Быстрый поиск» ведут себя по-другому: с классами «Быстрый поиск», такими как [^"] или [\s\S], не соответствуют разрывы строк (это неожиданно), а при помощи «Найти в файлах "они делают.

Проблема с моим RegEx заключается в том, что он также соответствует «инверсным строкам». Так что, если у меня есть Foo("TEST").Bar("TEST") он будет соответствовать ").Bar("

Чтобы улучшить это поведение (все еще далеки от совершенства) этот RegEx можно использовать: (?<![\w\.\)\\"])"(\\"|[^"]|"")*?[a-z](\\"|[^"]|"")*?"

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