import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "-\\s*Título\\s*:\\s*(.*)\\n*-\\s*Problema\\s*\\/\\s*Solução\\s*:(([^#]+))";
final String string = "### Problema/Solução\n\n"
+ "- Título: Problema de Desempenho no Faturamento de Contratos.\n\n"
+ "- Problema / Solução: \n\n"
+ "Problema: Toda vez que se faturam muitas notas de uma só vez, demora-se muito e às vezes nem fatura e ocorre um timeout.\n\n"
+ "Solução: O problema acontecia porque o sistema abria apenas uma transação para faturar os 577 contratos, e com isso gerava-se o \"JapeSession Timeout\". Agora, foi implementado um parâmetro chamado \"QTDLOTEFATCONT - Quantidade máx. de lotes no fat. de contrato.\" com Default = 0.\n"
+ "Regra de exemplo: \n\n"
+ "param.QTDLOTEFATCONT = 0, o faturamento acontece como antes, e se colocar muitos contratos irá dar o timeout, mesmo se aumentar a quantidade de TransactionTimeOut nos parâmetros do jboss.\n\n"
+ "param.QTDLOTEFATCONT = 100, se a quantidade de contratos for maior que 1, e maior que o informado no parâmetro, será montado um agrupamento de lote, e faturado em partes, Exemplo:\n\n"
+ "Total de Contratos para faturar = 438 \n"
+ "param.QTDLOTEFATCONT = 100\n\n"
+ "- Ao clicar em [Faturar], serão gerados 5 lotes, sendo 4 de 100 notas e 1 de 38 notas.\n\n"
+ "Observação: Se ocorrer algum tipo de erro, e a quantidade já faturada for maior que a do parâmetro, será apresentado na tela apenas o restante para ser faturado, pois os demais já foram faturados e levados para o Portal de Vendas.\n\n"
+ "### Requisitos básicos para atualização\n\n"
+ "Os arquivos para a atualização estão no site: http://downloads.sankhya.com.br.\n"
+ "O Sankhya-W 3.23 requer base de dados versão 4.21 completa dos scripts do MGE. \n"
+ "O Sankhya-W 3.24 requer base de dados versão 4.22 completa dos scripts do MGE. \n"
+ "O Sankhya-W 3.25 requer base de dados versão 4.23 completa dos scripts do MGE. \n\n\n"
+ "### CONCLUSÃO/COLABORAÇÃO DO Q.A.\n\n"
+ "### Observações complementares\n\n"
+ "Não tem.";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html