#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 или более символам, которые являются пробелами или не пробелами (другими словами, любым символом).