У меня проблемы с регулярным выражением ... дело в следующем: рассмотрите следующий HTML:
</p>
<pre><form>
<input name="methodIndex" value="0" type="hidden">
<hr align="left" width="80">
<h4>java.lang.String methodName()</h4>
<p>Operation exposed for management</p>
<table border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr class="OperationHeader">
<th>Param</th>
<th>ParamType</th>
<th>ParamValue</th>
<th>ParamDescription</th>
</tr>
<tr>
<td>p1</td>
<td>java.lang.String</td>
<td><input name="arg0" type="text"></td>
<td>(no description)</td>
</tr>
<tr>
<td>p2</td>
<td>java.lang.String</td>
<td><input name="arg0" type="text"></td>
<td>(no description)</td>
</tr>
</tbody>
</table>
<input value="Invoke" type="submit">
</form>
</pre>
<p>
и теперь рассмотрим следующее регулярное выражение, которое форматирует этот html:
</p>
<pre><input[^>]+name="methodIndex"[^>]*value="(.+?)"[^>]*>
.+?
<h4>\s+\s(.+?)\(\)</h4>
\s+<p>[^<]+</p>
\s*
(?:<table[^>]+>
\s*
<tbody>
\s*
<tr[^>]*>(?:\s*<th>[^<]+</th>\s*){4}</tr>
\s*
(?:<tr>\s*<td>.+?</td>\s*
\s*<td>\s*(.+?)\s*</td>\s*
(?:\s*<td>.+?</td>\s*){2}
</tr>\s*)+?
\s*
</tbody>
\s*
</table>)?
.+?
</form></pre>
<p>
То, что я знаю, слишком сложно, но эй .. оно делает свою работу. Ну, вроде ... видите, он захватывает все, что я хочу захватить, но ... когда у меня есть несколько параметров (p1, p2, ..., pn), все параметры записываются, но размер группы сопоставителя остается 3 . а group (3) возвращает последний найденный параметр - pn. C # имеет функциональность CaptureGroup, но не Java .. как мне перехватить ВСЕ значения этой повторяющейся группы?
Это моя единственная проблема ... выяснить способ захвата ВСЕХ значений этой группы, а не только последних.
Большое спасибо за вашу помощь! Надеюсь, я ясно дал понять ...