2013-06-06 2 views
0

Я пытаюсь написать регулярное выражение в затмении, которое распознает строкуРегулярного выражения для сообщения

X.printStackTrace(); 

где «X» будет переменным исключение. Мое выражение выглядит следующим образом:

([^\*\/\/\s])(.*)\Q.printStackTrace();\E 

Это работает правильно, кроме как на 3-й линии, когда есть несколько операторов printStackTrace в одной строке.

/* e.printStackTrace(); 
    e.getMessage(); 
    e.printStackTrace();e.printStackTrace(); e.printStackTrace(); 
    e.printStackTrace();*/ 
/* e.printStackTrace(); 
    e.getMessage();*/ 
/* 
// e.printStackTrace(); 
    e.getMessage(); 
*/ 

Может кто-нибудь, дайте мне знать, что должно быть регулярное выражение, если я должен искать только

X.printStackTrace(); 

на 3-й линии?

+0

В вашем примере выше, что линии/лексемы вы хотите, чтобы ваши регулярные выражения, чтобы соответствовать? – gkalpak

+0

Как вы себя чувствуете? Примечание: звезда и косая черта не требуют экранирования в классе символов, вы можете просто написать '[^ */\ s]' – fge

ответ

1

Проблема в части (.*): вы должны лениться, используя (.*?).

я бы использовал следующее регулярное выражение, хотя: [^.\s]+\Q.printStackTrace();\E

+0

Мне также нужно игнорировать комментарии блоков, поэтому я добавил ([^ \\ * // \ s]). Спасибо за участие в ленивом совпадении. Это решило мою проблему. – Adithya

0

Вы могли бы смотреть на это:

((?:\w+.printStackTrace\(\);\s*)+?) 

Отъезд соответствует here.

EDIT: (мой выход на регулярное выражение Rubular)

/* e.printStackTrace();

e.getMessage();

e.printStackTrace(); e.printStackTrace(); e.printStackTrace();

e.printStackTrace(); */

/* e.printStackTrace();

e.getMessage(); //

// e.printStackTrace();

e.getMessage(); */

EDIT

Для этого нам нужно настроить шаблон, чтобы сделать greedy (+) в ungreedy (+?).

+0

, что он не работает. У него все еще есть проблема с 3-м оператором с несколькими операторами printstacktrace. – Adithya

+0

Вы посмотрели ссылку? – NeverHopeless

+0

Еще проблема? – NeverHopeless

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