2013-06-21 1 views
1

Я использую Grep Console в Eclipse, чтобы выделить строки на выходе консоли, содержащие символы, например. cancel, на основе регулярного выражения. Символы могут иметь символ, предшествующий и/или следующий за ним, могут быть окружены пробелами или могут быть подстроками. Другими словами, я хочу, чтобы соответствовать следующие строки (независимо от случая):Регулярное выражение для поиска подстрок с использованием Grep Console в Eclipse

The flight was cancelled. 
[Cancelled] Flight 101 
Are they going to cancel it? 

Что такое регулярное выражение, что мне нужно использовать, чтобы выделить эти строки?

ответ

0

Использование:

.*(\Qcancel\E).* 

И не проверяют "чувствителен к регистру".

Или просто cancel в текстовом поле «Быстрое выражение».

+0

Я сделал несколько тестов здесь, и оба работали. Поэтому дайте мне знать, работают ли они и для вас. – acdcjunior

2

Поскольку acdcjunior уже объяснил, вам в принципе просто нужно нечувствительное к регистру регулярное выражение для соответствия «cancel».

Если у вас уже есть выход на консоли, самый простой способ создать это выражение - просто выбрать слово «отменить» на выходе, затем щелкнуть правой кнопкой мыши и выбрать «Добавить выражение» из контекстного меню. В подменю вы выберете группу, к которой будет добавлено новое выражение, или создайте новую. Элемент выражения будет создаваться, используя следующее выражение:

(\Qcancel\E) 

не забудьте отключить «Case чувствительный» флажок, который включен по умолчанию для повышения производительности и предотвратил бы выражение от соответствия вашей второй линии с столица «C».

Это в основном то же самое выражение acdcjunior при условии, с некоторыми отличиями:

В .* matchers в начале и в конце выражения не включены, так как они не нужны. Выражения всегда будут соответствовать подстрокам в любом месте строки, если не используются специальные маркеры $ или ^, чтобы конкретно ссылаться на начало или конец строки.

Выражение также заключено в круглые скобки для создания группы захвата, что позволяет присваивать стиль не только всей строке, содержащей строку cancel, но и самой этой строке. Вы можете оставить круглые скобки, если вы не хотите стилизовать эту строку.

\Q10 и \E всегда включены при создании выражения из выбранной текстовой строки, чтобы убедиться, что символы из выбранной строки не интерпретируются как специальные символы выражений. В этом случае это необязательно, так как cancel содержит только символы слова.

Это означает, что в вашем случае, самое простое достаточное выражение просто:

cancel 

Это выражение также работает, если вы используете его в качестве «быстрого выражения», как это было предложено acdcjunior, хотя нет никакого реального нужно для этого. Идея быстрого выражения заключается в том, что очень длинные строки в консоли могут значительно замедлить сопоставление шаблонов. Таким образом, Grep Console имеет настраиваемый предел того, сколько символов в каждой строке будет соответствовать настроенным выражениям.Любые символы после этого предела в длинных строках игнорируются, а это означает, что строки, содержащие ключевые слова только после лимита, не будут распознаваться и, следовательно, не стилизованы.

Если вы настроите быстрое выражение, каждая строка сначала будет соответствовать этому выражению, и только если совпадение будет положительным, будет использоваться «нормальное» выражение. В этом случае выражения сопоставляются с всей строкой. Быстрое выражение должно быть максимально простым, чтобы не замедлять совпадение.

В вашем случае использование cancel в качестве быстрого выражения и оставление нормального выражения пустым, потому что сначала быстрое выражение позитивно сопоставляется с вашей линией, а затем также имеет пустое выражение. Если у вас очень длинные строки, это может стоить вам некоторой производительности, поскольку быстрое выражение будет игнорировать ограничения длины, описанные выше. Кроме того, быстрое выражение не использует группы захвата, поэтому вы не можете выделить строку cancel с отдельным стилем в этом случае.

+0

Chiming in: Я добавил выражение для соответствия строгим строкам JVM: '^ (\ [Loaded. * \]) $'. Я странно получаю совпадение на случайных строках (в строках, которые соответствуют регулярному выражению): некоторые получают стиль, а некоторые другие. Есть идеи? Это происходит только со мной? PS То же самое, что удаляет '^ $' разделители строк. U_U – Campa

+0

Может ли это быть связано с быстрыми выражениями и ограничениями длины строки, описанными выше? I.e., являются ли строки, которые не совпадают, возможно, дольше, чем установленные пределы? Я предполагаю, что указанная вами группа означает, что выражение должно соответствовать всей строке, поэтому, если линия слишком длинная, это может вызвать проблемы. (Если вы хотите выделить всю строку в любом случае, вы также можете просто оставить группу: '^ \ [Loaded. * \] $' И применить стиль для всей строки) –

+0

Нет. Я не определил какой-либо быстрое выражение, и я получаю такое же поведение, как и выключение группировки. Спасибо, в любом случае! – Campa