Наличие этого шаблона для регулярного выражения:
Pattern p = Pattern.compile("[^\\.](?s)executeRule\\(\\s*?(.+?),\\s*?('.+?'),\\s*(\\[.+?\\]\\s*\\);)");
У меня есть текст вроде:
setSomething(false);
executeRule(document, 'PublishDocumentsToEmail', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
);
System.out.println("bla");
executeRule(document, 'PublishDocumentsToJMS', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
);
Я хочу найти последовательности, содержащие шаблон executeRule.
Мое регулярное выражение успешно находит только первое появление образца; все шаблоны, которые следуют за этим первым шаблоном, будут содержать предыдущие шаблоны.
например. в первый раз, когда я анализирую, я нахожу
executeRule(document, 'PublishDocumentsToEmail', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
);
Я делаю некоторые замены в шаблоне, чтобы он стал
executeRule(document, 'PublishDocumentsToEmail', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
,crs
);
После этого я рекурсивно вызываю тот же метод разбора с новым текстом, который
setSomething(false);
executeRule(document, 'PublishDocumentsToEmail', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
,crs
);
System.out.println("bla");
executeRule(document, 'PublishDocumentsToJMS', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
);
и мое регулярное выражение будет соответствовать всему разделу с
executeRule(document, 'PublishDocumentsToEmail', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
,crs
);
System.out.println("bla");
executeRule(document, 'PublishDocumentsToJMS', [
'xmlMapping':'xmlmapping.TagRegLike',
'emailAddress':'EMAIL(mymail@mail.com)',
'emailSubject':'Test',
'emailText':'test',
'filenameSuffix':'test']
);
Как сделать так, чтобы он соответствовал только моему второму шаблону?
Thx