2011-01-28 8 views
0

Какой шаблон RegEx следует использовать для соответствия CP_, но не CPLAT::CP_?RegEx для соответствия строке, если она не соответствует другой строке

+0

Умение читать и сочинять RegEx берет на себя практику, только потому, что вы знаете один язык, автоматически не означает, что вы можете поднять другой без особых усилий, особенно тот, который использует совершенно иную идиому. например попробуйте Lisp. - Дело не в том, что RegEx особенно тяжело, это просто не все, что доступно, я бы рекомендовал использовать некоторые инструменты, которые позволяют регулярное выражение как шаблоны поиска, и делать их как можно чаще, небольшая практика проходит долгий путь. – ocodo

ответ

0

Я думаю, что вы хотите «^ CP_» как ваше регулярное выражение. Элемент^указывает выражению, чтобы проверить это значение в начале ввода.

http://www.regular-expressions.info/anchors.html

+0

^привязывается к первому символу в строке/строке, а не по первому символу в слове/символе. Похоже, OP нуждался в поиске файлов, а не просто сравнивать одно слово в строке. – CoreyStup

+0

@corey - yup поиск по файлам – Axl

0
[^:]CP_ 

Найдет все экземпляры CP_, которые не предваряется в :

использовать опцию g (в зависимости от регулярного выражения вкуса), если вы ожидаете более одного матча CP_.

+0

Флаг 'g' требуется некоторыми способами, такими как Perl и JavaScript, если вы ищете несколько совпадений - одну строку или отдельные строки, это не имеет значения. Модификатор 'm' полностью не связан; все, что он делает, это изменение значения якорей '^' и '$'. –

+0

Моя ошибка, я думал, что 'm' был эквивалентом' g' на некоторые вкусы. – ocodo

1

Кроме того, есть ли у кого-нибудь очень простой учебник, такой как RegEx для чайников? Странно ли, что я код на C++, но не могу легко понять RegEx?

Нет, это не странно. Мастерство регулярных выражений требует определенного мышления, которое не приходит естественным образом. И возможность программирования на C++ или любом другом языке, похоже, не помогает - во всяком случае, это гандикап. Есть хороший учебник here, но даже лучший учебник поможет вам только на уровне pidgin. Если вы действительно хотите, чтобы ваша голова вокруг регулярных выражений, вам нужно The Book.

Другая проблема заключается в том, что для регулярных выражений нет стандарта; каждый язык программирования, каждая среда, каждый IDE или текстовый редактор, похоже, имеют свой собственный «аромат» регулярного выражения. У некоторых есть функции, которые другие нет, в то время как некоторые используют другой синтаксис для выполнения одних и тех же вещей. Вот где входит The Other Book. Множество примеров задач, которые мы обычно используем для регулярных выражений, в нескольких из самых популярных ароматов и тщательно объясняем.

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