Регулярное выражение, соответствующее определенной функции и всему ее содержимому

#java #regex

Вопрос:

У меня есть файл c, содержащий несколько функций, и мне нужно извлечь определенную функцию и все ее содержимое, как показано ниже. Его зовут Start, и он заканчивается комментарием /* Start */

 FUNC(boolean, CODE) Start(Type Mode) {
  boolean disp;
  // more code
  // more code
  // more code
  } /* Start */
 

Я написал следующее регулярное выражение:

 (FUNC(boolean, CODE) Start(Type Mode) {)(.*)(} /* Start */)
 

но это не соответствует следующей строке .*

Мне нужно написать эту утилиту на Java.

Вот ссылка для регулярного выражения: https://regex101.com/r/yT5EqX/1/

Комментарии:

1. Вы можете сделать так, чтобы точка соответствовала новой строке, используя s флаг. Видишь regex101.com/r/PF022d/1 Обратите внимание, что это .* будет совпадать до конца всех строк, а затем будет возвращаться до последнего вхождения. Вы могли бы сделать это не жадным .*?

2. Или просто замените (.*) на ([sS]*?) , который не будет жадно соответствовать 0 или более символам, которые являются пробелами или не пробелами (другими словами, любым символом).