Какой шаблон RegEx следует использовать для соответствия CP_
, но не CPLAT::CP_
?RegEx для соответствия строке, если она не соответствует другой строке
ответ
Я думаю, что вы хотите «^ CP_» как ваше регулярное выражение. Элемент^указывает выражению, чтобы проверить это значение в начале ввода.
(?<!CPLAT::)CP_
Использует negative lookbehind
[^:]CP_
Найдет все экземпляры CP_
, которые не предваряется в :
использовать опцию g
(в зависимости от регулярного выражения вкуса), если вы ожидаете более одного матча CP_
.
Флаг 'g' требуется некоторыми способами, такими как Perl и JavaScript, если вы ищете несколько совпадений - одну строку или отдельные строки, это не имеет значения. Модификатор 'm' полностью не связан; все, что он делает, это изменение значения якорей '^' и '$'. –
Моя ошибка, я думал, что 'm' был эквивалентом' g' на некоторые вкусы. – ocodo
Кроме того, есть ли у кого-нибудь очень простой учебник, такой как RegEx для чайников? Странно ли, что я код на C++, но не могу легко понять RegEx?
Нет, это не странно. Мастерство регулярных выражений требует определенного мышления, которое не приходит естественным образом. И возможность программирования на C++ или любом другом языке, похоже, не помогает - во всяком случае, это гандикап. Есть хороший учебник here, но даже лучший учебник поможет вам только на уровне pidgin. Если вы действительно хотите, чтобы ваша голова вокруг регулярных выражений, вам нужно The Book.
Другая проблема заключается в том, что для регулярных выражений нет стандарта; каждый язык программирования, каждая среда, каждый IDE или текстовый редактор, похоже, имеют свой собственный «аромат» регулярного выражения. У некоторых есть функции, которые другие нет, в то время как некоторые используют другой синтаксис для выполнения одних и тех же вещей. Вот где входит The Other Book. Множество примеров задач, которые мы обычно используем для регулярных выражений, в нескольких из самых популярных ароматов и тщательно объясняем.
- 1. Regex ленивых соответствия не соответствует строке соответствует по жадному выражению
- 2. Regex в Qt не соответствует строке, она должна
- 3. regex не соответствует новой строке
- 4. Regex соответствует строке, если это единственное в строке (кроме пробелов)
- 5. Regex не полностью соответствует строке
- 6. Regex не соответствует намеченной строке
- 7. Python - Regex не соответствует строке
- 8. Regex соответствует строке между%
- 9. regex для соответствия всей строке, если строка не указана/
- 10. Строка не соответствует другой строке
- 11. не соответствует пустой строке для regex
- 12. regex соответствует строке, но не внутри шаблона
- 13. RegEx для соответствия строке, исключая символы подчеркивания
- 14. Regex соответствует цифре в строке
- 15. Не соответствует строке, когда она содержит слово
- 16. Проверьте, если строка соответствует другой строке
- 17. соответствия RegEx в строке HTML
- 18. Python Regex не соответствует, если слово в строке
- 19. Regex соответствует строке, начинающейся с +
- 20. Regex соответствует только первой строке?
- 21. Regex соответствует строке, когда она существует, или нет
- 22. Faster Regex, кроме. + Для соответствия всей строке
- 23. Что Regex соответствует этой строке?
- 24. Perl regex для соответствия URI в строке
- 25. Regex - соответствует строке без пробелов
- 26. Regex соответствует строке, не заканчивающейся шаблоном
- 27. C# regex - не соответствует моей строке
- 28. Regex replace IF, если переменная не соответствует строке
- 29. Regex, что соответствует строке, а не слово
- 30. C не соответствует новой строке
Умение читать и сочинять RegEx берет на себя практику, только потому, что вы знаете один язык, автоматически не означает, что вы можете поднять другой без особых усилий, особенно тот, который использует совершенно иную идиому. например попробуйте Lisp. - Дело не в том, что RegEx особенно тяжело, это просто не все, что доступно, я бы рекомендовал использовать некоторые инструменты, которые позволяют регулярное выражение как шаблоны поиска, и делать их как можно чаще, небольшая практика проходит долгий путь. – ocodo