Help com uma regular expression

Tô apanhando pacas com uma regular expression que escrevi pra retornar todas as declarações de include que não estejam comentadas em um arquivo JSP.

Tenho, basicamente, 5 casos a tratar:

  1. comentário tipo 1 <!-- -->
  2. comentário tipo 2 <%-- --%>
  3. include tipo 1, <%@ include file = “anything” %>
  4. include tipo 2, < jsp:include page = "anything" [flush = "true|false"] />
  5. include tipo 3 < jsp:include page = "anything" [flush = "true|false"] > <param > < /jsp:include >

Estou tentando capturar essas declarações com uma única RE de forma tal que essa retorne o grupo (1-5) a qual pertence (na verdade são 5 REs, cada uma em um grupo distinto, divididas com OR), o java retorna o primeiro grupo que casar com a pesquisa.

A RE está funcionando para 1-4 mas não sei pq cargas dágua está bichando para o tipo 5. Tentei trabalhar com essa RE isoladamente e a mesma funciona, contudo qdo no grupo 5 (com OR) ela mela completamente …

Instalei o quickRex no meu eclipse aqui e a RE funciona direitinho no plugin com o JSP de teste listado abaixo, só que qdo rodo a mesma no java ela não volta o mesmo resultado (bug no quickRex?)

Tentei diversas configurações diferentes (?ms) para comentário 1 e 2 e (?-ms) para o include 1,2 e 3 e até agora nada …

Tô ficando careca e essa m não anda, então decidi pedir ajudar pros universitários …
:sunglasses:

Essa regular expression será utilizada num plugin que estou escrevendo (http://sourceforge.net/projects/jsprtools/) pra fazer refactoring de páginas jsp …

Please, alguma sugestão? algum Regular Expression master de plantão poderia por obséquio ajudar minha pobre alma???

Segue a RE:[code]
protected static final String EMPTY = "";

protected static final String OR = "|";

/* <!-- -->
/
protected static final String reComment1 = "(<!–.
?–>)";

/* <%-- --%>
/
protected static final String reComment2 = "(<%–.
?–%>)";

/* <%@ include file = “anything” %>
/
protected static final String reInclude1 = "(<%@\s
include\sfile\s=\s*".?"\s%>)";

/* < jsp:include page = "anything" [flush = "true|false"] />
/
protected static final String reInclude2 =
"(<\s
jsp:include\spage\s=\s*&quot;.?&quot;\s[flush\s*=\s*&quot;.?&quot;]\s*/>)";

/* < jsp:include page = "anything" [flush = "true|false"] >
* [<param />]
* < /jsp:include>
/
protected static final String reInclude3 =
"((?-ms)<\s
jsp:include\spage\s=\s*&quot;.?&quot;\s[flush\s*=\s*&quot;.?&quot;]\s*[^/]>\s[<param\s*.?/?>]\s*<\s*/jsp:include\s*?>)";

/**
* (<!–.?–>)|
* (<%–.
?–%>)|
* (<%@\sinclude\sfile\s*=\s*".?"\s%>)|
* (<\sjsp:include\spage\s*=\s*&quot;.?&quot;\s[flush\s*=\s*&quot;.?&quot;]\s*/?>)|
* (<\sjsp:include\spage\s*=\s*&quot;.?&quot;\s[flush\s*=\s*&quot;.?&quot;]\s*[^/]>[<param\s.?/>]<\s*/jsp:include\s*>)
*/

/*
* MUST be mutually exclusive.
*/
protected static final Pattern pInclude = Pattern.compile( //
reComment1 + OR + reComment2 + OR + reInclude1 + OR + reInclude2 + OR + reInclude3, //
Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE //
);
[/code]

o arquivo JSP para teste da RE:[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1”%>
<%@ include file="/htmlHead.inc" + “2”
%>
<title>Trash page</title>
</head>
<body>

<%
String jspPage = “dynamic.inc”;
%>

 &lt;%@ include file="/file1.inc" %&gt;
 &lt;%@ include file="/file2.inc"
 %&gt;

 &lt; jsp:include page = &quot;file3.jsp&quot; flush = &quot;false&quot;

/>

 Dammit! The jsp:include below is resolved at run-time, not at compile time
 as we initially thought.

 &lt; jsp:include page = &quot;file4.jsp&quot; flush = &quot;false&quot;

/>

 &lt;%@ include file="/file5.inc"
 %&gt;

<!–
<%@ include file="/file6.inc"
%>
< jsp:include page = “file3.jsp” flush = “false”
/>
< jsp:include page = “/common/header.jsp” flush = “false” />
< jsp:include page = “/common/header.jsp” flush = “FaLse” />
< jsp:include page = “/common/header.jsp” flush = “TRUE” />
< jsp:include flush = “TRUE” page = “/common/header.jsp” />
< jsp:include page = “/common/header.jsp” />
–>
<%@ include file="/file7.inc"
%>
< jsp:include page = “file8.jsp” flush = “false” />

 &lt; jsp:include page = &quot;/file9.jsp&quot; flush = &quot;false&quot; &gt;
    &lt;param /&gt;
 &lt; /jsp:include&gt;

lixo

 &lt; jsp:include page = &quot;&lt;%= jspPage %&gt;&quot; flush = &quot;false&quot; /&gt;

 &lt;jsp:include page = "/fileA.jsp" flush = "false"&gt;
    &lt;param /&gt;
    &lt;param /&gt;
    &lt;param /&gt;
    &lt;param /&gt;
    &lt;param /&gt;
 &lt;/jsp:include&gt;

 &lt;jsp:include page = "/fileB.jsp" flush = "false" &gt;&lt;/jsp:include&gt;

 &lt;jsp:include page = "/fileC.jsp" flush = "false" &gt;
 &lt;/jsp:include&gt;

 not supported!
 &lt;  &lt;!-- --&gt;  jsp:include &lt;!-- --&gt; page &lt;!-- --&gt; = &lt;!-- --&gt; "fileX.jsp" &lt;!-- --&gt; flush &lt;!-- --&gt; = &lt;!-- --&gt; "false" &lt;!-- --&gt; /&gt;

[/code]

qualquer ajuda é bem vinda, please!
:cry: