jdk/src/java.base/share/classes/java/util/regex/Pattern.java
changeset 44846 b3f9f5bf40b2
parent 44844 b2b4d98404ba
child 45124 144479e89cdb
--- a/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Wed Apr 26 14:03:02 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Wed Apr 26 16:05:55 2017 -0700
@@ -82,305 +82,305 @@
  * <table border="0" cellpadding="1" cellspacing="0"
  *  summary="Regular expression constructs, and what they match">
  *
- * <tr align="left">
- * <th align="left" id="construct">Construct</th>
- * <th align="left" id="matches">Matches</th>
+ * <tr style="text-align:left">
+ * <th style="text-align:left" id="construct">Construct</th>
+ * <th style="text-align:left" id="matches">Matches</th>
  * </tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="characters">Characters</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="characters">Characters</th></tr>
  *
- * <tr><td valign="top" headers="construct characters"><i>x</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters"><i>x</i></td>
  *     <td headers="matches">The character <i>x</i></td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \\}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \\}</td>
  *     <td headers="matches">The backslash character</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \0}<i>n</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>n</i></td>
  *     <td headers="matches">The character with octal value {@code 0}<i>n</i>
  *         (0&nbsp;{@code <=}&nbsp;<i>n</i>&nbsp;{@code <=}&nbsp;7)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \0}<i>nn</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>nn</i></td>
  *     <td headers="matches">The character with octal value {@code 0}<i>nn</i>
  *         (0&nbsp;{@code <=}&nbsp;<i>n</i>&nbsp;{@code <=}&nbsp;7)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \0}<i>mnn</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>mnn</i></td>
  *     <td headers="matches">The character with octal value {@code 0}<i>mnn</i>
  *         (0&nbsp;{@code <=}&nbsp;<i>m</i>&nbsp;{@code <=}&nbsp;3,
  *         0&nbsp;{@code <=}&nbsp;<i>n</i>&nbsp;{@code <=}&nbsp;7)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \x}<i>hh</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \x}<i>hh</i></td>
  *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;{@code 0x}<i>hh</i></td></tr>
- * <tr><td valign="top" headers="construct characters"><code>&#92;u</code><i>hhhh</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters"><code>&#92;u</code><i>hhhh</i></td>
  *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;{@code 0x}<i>hhhh</i></td></tr>
- * <tr><td valign="top" headers="construct characters"><code>&#92;x</code><i>{h...h}</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters"><code>&#92;x</code><i>{h...h}</i></td>
  *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;{@code 0x}<i>h...h</i>
  *         ({@link java.lang.Character#MIN_CODE_POINT Character.MIN_CODE_POINT}
  *         &nbsp;&lt;=&nbsp;{@code 0x}<i>h...h</i>&nbsp;&lt;=&nbsp;
  *          {@link java.lang.Character#MAX_CODE_POINT Character.MAX_CODE_POINT})</td></tr>
- * <tr><td valign="top" headers="construct characters"><code>&#92;N{</code><i>name</i><code>}</code></td>
+ * <tr><td style="vertical-align:top" headers="construct characters"><code>&#92;N{</code><i>name</i><code>}</code></td>
  *     <td headers="matches">The character with Unicode character name <i>'name'</i></td></tr>
- * <tr><td valign="top" headers="matches">{@code \t}</td>
+ * <tr><td style="vertical-align:top" headers="matches">{@code \t}</td>
  *     <td headers="matches">The tab character (<code>'&#92;u0009'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \n}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \n}</td>
  *     <td headers="matches">The newline (line feed) character (<code>'&#92;u000A'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \r}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \r}</td>
  *     <td headers="matches">The carriage-return character (<code>'&#92;u000D'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \f}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \f}</td>
  *     <td headers="matches">The form-feed character (<code>'&#92;u000C'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \a}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \a}</td>
  *     <td headers="matches">The alert (bell) character (<code>'&#92;u0007'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \e}</td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \e}</td>
  *     <td headers="matches">The escape character (<code>'&#92;u001B'</code>)</td></tr>
- * <tr><td valign="top" headers="construct characters">{@code \c}<i>x</i></td>
+ * <tr><td style="vertical-align:top" headers="construct characters">{@code \c}<i>x</i></td>
  *     <td headers="matches">The control character corresponding to <i>x</i></td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="classes">Character classes</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="classes">Character classes</th></tr>
  *
- * <tr><td valign="top" headers="construct classes">{@code [abc]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [abc]}</td>
  *     <td headers="matches">{@code a}, {@code b}, or {@code c} (simple class)</td></tr>
- * <tr><td valign="top" headers="construct classes">{@code [^abc]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [^abc]}</td>
  *     <td headers="matches">Any character except {@code a}, {@code b}, or {@code c} (negation)</td></tr>
- * <tr><td valign="top" headers="construct classes">{@code [a-zA-Z]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-zA-Z]}</td>
  *     <td headers="matches">{@code a} through {@code z}
  *         or {@code A} through {@code Z}, inclusive (range)</td></tr>
- * <tr><td valign="top" headers="construct classes">{@code [a-d[m-p]]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-d[m-p]]}</td>
  *     <td headers="matches">{@code a} through {@code d},
  *      or {@code m} through {@code p}: {@code [a-dm-p]} (union)</td></tr>
- * <tr><td valign="top" headers="construct classes">{@code [a-z&&[def]]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[def]]}</td>
  *     <td headers="matches">{@code d}, {@code e}, or {@code f} (intersection)</tr>
- * <tr><td valign="top" headers="construct classes">{@code [a-z&&[^bc]]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[^bc]]}</td>
  *     <td headers="matches">{@code a} through {@code z},
  *         except for {@code b} and {@code c}: {@code [ad-z]} (subtraction)</td></tr>
- * <tr><td valign="top" headers="construct classes">{@code [a-z&&[^m-p]]}</td>
+ * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[^m-p]]}</td>
  *     <td headers="matches">{@code a} through {@code z},
  *          and not {@code m} through {@code p}: {@code [a-lq-z]}(subtraction)</td></tr>
  * <tr><th>&nbsp;</th></tr>
  *
- * <tr align="left"><th colspan="2" id="predef">Predefined character classes</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="predef">Predefined character classes</th></tr>
  *
- * <tr><td valign="top" headers="construct predef">{@code .}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code .}</td>
  *     <td headers="matches">Any character (may or may not match <a href="#lt">line terminators</a>)</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \d}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \d}</td>
  *     <td headers="matches">A digit: {@code [0-9]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \D}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \D}</td>
  *     <td headers="matches">A non-digit: {@code [^0-9]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \h}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \h}</td>
  *     <td headers="matches">A horizontal whitespace character:
  *     <code>[ \t\xA0&#92;u1680&#92;u180e&#92;u2000-&#92;u200a&#92;u202f&#92;u205f&#92;u3000]</code></td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \H}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \H}</td>
  *     <td headers="matches">A non-horizontal whitespace character: {@code [^\h]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \s}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \s}</td>
  *     <td headers="matches">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \S}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \S}</td>
  *     <td headers="matches">A non-whitespace character: {@code [^\s]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \v}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \v}</td>
  *     <td headers="matches">A vertical whitespace character: <code>[\n\x0B\f\r\x85&#92;u2028&#92;u2029]</code>
  *     </td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \V}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \V}</td>
  *     <td headers="matches">A non-vertical whitespace character: {@code [^\v]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \w}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \w}</td>
  *     <td headers="matches">A word character: {@code [a-zA-Z_0-9]}</td></tr>
- * <tr><td valign="top" headers="construct predef">{@code \W}</td>
+ * <tr><td style="vertical-align:top" headers="construct predef">{@code \W}</td>
  *     <td headers="matches">A non-word character: {@code [^\w]}</td></tr>
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="posix"><b>POSIX character classes (US-ASCII only)</b></th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="posix"><b>POSIX character classes (US-ASCII only)</b></th></tr>
  *
- * <tr><td valign="top" headers="construct posix">{@code \p{Lower}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Lower}}</td>
  *     <td headers="matches">A lower-case alphabetic character: {@code [a-z]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Upper}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Upper}}</td>
  *     <td headers="matches">An upper-case alphabetic character:{@code [A-Z]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{ASCII}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{ASCII}}</td>
  *     <td headers="matches">All ASCII:{@code [\x00-\x7F]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Alpha}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Alpha}}</td>
  *     <td headers="matches">An alphabetic character:{@code [\p{Lower}\p{Upper}]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Digit}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Digit}}</td>
  *     <td headers="matches">A decimal digit: {@code [0-9]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Alnum}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Alnum}}</td>
  *     <td headers="matches">An alphanumeric character:{@code [\p{Alpha}\p{Digit}]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Punct}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Punct}}</td>
  *     <td headers="matches">Punctuation: One of {@code !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~}</td></tr>
  *     <!-- {@code [\!"#\$%&'\(\)\*\+,\-\./:;\<=\>\?@\[\\\]\^_`\{\|\}~]}
  *          {@code [\X21-\X2F\X31-\X40\X5B-\X60\X7B-\X7E]} -->
- * <tr><td valign="top" headers="construct posix">{@code \p{Graph}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Graph}}</td>
  *     <td headers="matches">A visible character: {@code [\p{Alnum}\p{Punct}]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Print}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Print}}</td>
  *     <td headers="matches">A printable character: {@code [\p{Graph}\x20]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Blank}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Blank}}</td>
  *     <td headers="matches">A space or a tab: {@code [ \t]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Cntrl}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Cntrl}}</td>
  *     <td headers="matches">A control character: {@code [\x00-\x1F\x7F]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{XDigit}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{XDigit}}</td>
  *     <td headers="matches">A hexadecimal digit: {@code [0-9a-fA-F]}</td></tr>
- * <tr><td valign="top" headers="construct posix">{@code \p{Space}}</td>
+ * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Space}}</td>
  *     <td headers="matches">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2">java.lang.Character classes (simple <a href="#jcc">java character type</a>)</th></tr>
+ * <tr style="text-align:left"><th colspan="2">java.lang.Character classes (simple <a href="#jcc">java character type</a>)</th></tr>
  *
- * <tr><td valign="top">{@code \p{javaLowerCase}}</td>
+ * <tr><td style="vertical-align:top">{@code \p{javaLowerCase}}</td>
  *     <td>Equivalent to java.lang.Character.isLowerCase()</td></tr>
- * <tr><td valign="top">{@code \p{javaUpperCase}}</td>
+ * <tr><td style="vertical-align:top">{@code \p{javaUpperCase}}</td>
  *     <td>Equivalent to java.lang.Character.isUpperCase()</td></tr>
- * <tr><td valign="top">{@code \p{javaWhitespace}}</td>
+ * <tr><td style="vertical-align:top">{@code \p{javaWhitespace}}</td>
  *     <td>Equivalent to java.lang.Character.isWhitespace()</td></tr>
- * <tr><td valign="top">{@code \p{javaMirrored}}</td>
+ * <tr><td style="vertical-align:top">{@code \p{javaMirrored}}</td>
  *     <td>Equivalent to java.lang.Character.isMirrored()</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="unicode">Classes for Unicode scripts, blocks, categories and binary properties</th></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \p{IsLatin}}</td>
+ * <tr style="text-align:left"><th colspan="2" id="unicode">Classes for Unicode scripts, blocks, categories and binary properties</th></tr>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{IsLatin}}</td>
  *     <td headers="matches">A Latin&nbsp;script character (<a href="#usc">script</a>)</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \p{InGreek}}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{InGreek}}</td>
  *     <td headers="matches">A character in the Greek&nbsp;block (<a href="#ubc">block</a>)</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \p{Lu}}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{Lu}}</td>
  *     <td headers="matches">An uppercase letter (<a href="#ucc">category</a>)</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \p{IsAlphabetic}}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{IsAlphabetic}}</td>
  *     <td headers="matches">An alphabetic character (<a href="#ubpc">binary property</a>)</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \p{Sc}}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{Sc}}</td>
  *     <td headers="matches">A currency symbol</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code \P{InGreek}}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code \P{InGreek}}</td>
  *     <td headers="matches">Any character except one in the Greek block (negation)</td></tr>
- * <tr><td valign="top" headers="construct unicode">{@code [\p{L}&&[^\p{Lu}]]}</td>
+ * <tr><td style="vertical-align:top" headers="construct unicode">{@code [\p{L}&&[^\p{Lu}]]}</td>
  *     <td headers="matches">Any letter except an uppercase letter (subtraction)</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="bounds">Boundary matchers</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="bounds">Boundary matchers</th></tr>
  *
- * <tr><td valign="top" headers="construct bounds">{@code ^}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code ^}</td>
  *     <td headers="matches">The beginning of a line</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code $}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code $}</td>
  *     <td headers="matches">The end of a line</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \b}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \b}</td>
  *     <td headers="matches">A word boundary</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \b{g}}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \b{g}}</td>
  *     <td headers="matches">A Unicode extended grapheme cluster boundary</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \B}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \B}</td>
  *     <td headers="matches">A non-word boundary</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \A}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \A}</td>
  *     <td headers="matches">The beginning of the input</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \G}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \G}</td>
  *     <td headers="matches">The end of the previous match</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \Z}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \Z}</td>
  *     <td headers="matches">The end of the input but for the final
  *         <a href="#lt">terminator</a>, if&nbsp;any</td></tr>
- * <tr><td valign="top" headers="construct bounds">{@code \z}</td>
+ * <tr><td style="vertical-align:top" headers="construct bounds">{@code \z}</td>
  *     <td headers="matches">The end of the input</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="lineending">Linebreak matcher</th></tr>
- * <tr><td valign="top" headers="construct lineending">{@code \R}</td>
+ * <tr style="text-align:left"><th colspan="2" id="lineending">Linebreak matcher</th></tr>
+ * <tr><td style="vertical-align:top" headers="construct lineending">{@code \R}</td>
  *     <td headers="matches">Any Unicode linebreak sequence, is equivalent to
  *     <code>&#92;u000D&#92;u000A|[&#92;u000A&#92;u000B&#92;u000C&#92;u000D&#92;u0085&#92;u2028&#92;u2029]
  *     </code></td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="grapheme">Unicode Extended Grapheme matcher</th></tr>
- * <tr><td valign="top" headers="construct grapheme">{@code \X}</td>
+ * <tr style="text-align:left"><th colspan="2" id="grapheme">Unicode Extended Grapheme matcher</th></tr>
+ * <tr><td style="vertical-align:top" headers="construct grapheme">{@code \X}</td>
  *     <td headers="matches">Any Unicode extended grapheme cluster</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="greedy">Greedy quantifiers</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="greedy">Greedy quantifiers</th></tr>
  *
- * <tr><td valign="top" headers="construct greedy"><i>X</i>{@code ?}</td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code ?}</td>
  *     <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td valign="top" headers="construct greedy"><i>X</i>{@code *}</td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code *}</td>
  *     <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td valign="top" headers="construct greedy"><i>X</i>{@code +}</td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code +}</td>
  *     <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td valign="top" headers="construct greedy"><i>X</i><code>{</code><i>n</i><code>}</code></td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i><code>}</code></td>
  *     <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}}</td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}}</td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}</code></td>
+ * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}</code></td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="reluc">Reluctant quantifiers</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="reluc">Reluctant quantifiers</th></tr>
  *
- * <tr><td valign="top" headers="construct reluc"><i>X</i>{@code ??}</td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code ??}</td>
  *     <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td valign="top" headers="construct reluc"><i>X</i>{@code *?}</td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code *?}</td>
  *     <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td valign="top" headers="construct reluc"><i>X</i>{@code +?}</td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code +?}</td>
  *     <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td valign="top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>}?</code></td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>}?</code></td>
  *     <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>,}?</code></td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>,}?</code></td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct reluc"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}?</code></td>
+ * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}?</code></td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="poss">Possessive quantifiers</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="poss">Possessive quantifiers</th></tr>
  *
- * <tr><td valign="top" headers="construct poss"><i>X</i>{@code ?+}</td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code ?+}</td>
  *     <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td valign="top" headers="construct poss"><i>X</i>{@code *+}</td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code *+}</td>
  *     <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td valign="top" headers="construct poss"><i>X</i>{@code ++}</td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code ++}</td>
  *     <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td valign="top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>}+</code></td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>}+</code></td>
  *     <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>,}+</code></td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>,}+</code></td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td valign="top" headers="construct poss"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}+</code></td>
+ * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}+</code></td>
  *     <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="logical">Logical operators</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="logical">Logical operators</th></tr>
  *
- * <tr><td valign="top" headers="construct logical"><i>XY</i></td>
+ * <tr><td style="vertical-align:top" headers="construct logical"><i>XY</i></td>
  *     <td headers="matches"><i>X</i> followed by <i>Y</i></td></tr>
- * <tr><td valign="top" headers="construct logical"><i>X</i>{@code |}<i>Y</i></td>
+ * <tr><td style="vertical-align:top" headers="construct logical"><i>X</i>{@code |}<i>Y</i></td>
  *     <td headers="matches">Either <i>X</i> or <i>Y</i></td></tr>
- * <tr><td valign="top" headers="construct logical">{@code (}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct logical">{@code (}<i>X</i>{@code )}</td>
  *     <td headers="matches">X, as a <a href="#cg">capturing group</a></td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="backref">Back references</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="backref">Back references</th></tr>
  *
- * <tr><td valign="bottom" headers="construct backref">{@code \}<i>n</i></td>
- *     <td valign="bottom" headers="matches">Whatever the <i>n</i><sup>th</sup>
+ * <tr><td style="vertical-align:bottom" headers="construct backref">{@code \}<i>n</i></td>
+ *     <td style="vertical-align:bottom" headers="matches">Whatever the <i>n</i><sup>th</sup>
  *     <a href="#cg">capturing group</a> matched</td></tr>
  *
- * <tr><td valign="bottom" headers="construct backref">{@code \}<i>k</i>&lt;<i>name</i>&gt;</td>
- *     <td valign="bottom" headers="matches">Whatever the
+ * <tr><td style="vertical-align:bottom" headers="construct backref">{@code \}<i>k</i>&lt;<i>name</i>&gt;</td>
+ *     <td style="vertical-align:bottom" headers="matches">Whatever the
  *     <a href="#groupname">named-capturing group</a> "name" matched</td></tr>
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="quot">Quotation</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="quot">Quotation</th></tr>
  *
- * <tr><td valign="top" headers="construct quot">{@code \}</td>
+ * <tr><td style="vertical-align:top" headers="construct quot">{@code \}</td>
  *     <td headers="matches">Nothing, but quotes the following character</td></tr>
- * <tr><td valign="top" headers="construct quot">{@code \Q}</td>
+ * <tr><td style="vertical-align:top" headers="construct quot">{@code \Q}</td>
  *     <td headers="matches">Nothing, but quotes all characters until {@code \E}</td></tr>
- * <tr><td valign="top" headers="construct quot">{@code \E}</td>
+ * <tr><td style="vertical-align:top" headers="construct quot">{@code \E}</td>
  *     <td headers="matches">Nothing, but ends quoting started by {@code \Q}</td></tr>
  *     <!-- Metachars: !$()*+.<>?[\]^{|} -->
  *
  * <tr><th>&nbsp;</th></tr>
- * <tr align="left"><th colspan="2" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
+ * <tr style="text-align:left"><th colspan="2" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
  *
- * <tr><td valign="top" headers="construct special"><code>(?&lt;<a href="#groupname">name</a>&gt;</code><i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special"><code>(?&lt;<a href="#groupname">name</a>&gt;</code><i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, as a named-capturing group</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?:}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?:}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, as a non-capturing group</td></tr>
- * <tr><td valign="top" headers="construct special"><code>(?idmsuxU-idmsuxU)&nbsp;</code></td>
+ * <tr><td style="vertical-align:top" headers="construct special"><code>(?idmsuxU-idmsuxU)&nbsp;</code></td>
  *     <td headers="matches">Nothing, but turns match flags <a href="#CASE_INSENSITIVE">i</a>
  * <a href="#UNIX_LINES">d</a> <a href="#MULTILINE">m</a> <a href="#DOTALL">s</a>
  * <a href="#UNICODE_CASE">u</a> <a href="#COMMENTS">x</a> <a href="#UNICODE_CHARACTER_CLASS">U</a>
  * on - off</td></tr>
- * <tr><td valign="top" headers="construct special"><code>(?idmsux-idmsux:</code><i>X</i>{@code )}&nbsp;&nbsp;</td>
+ * <tr><td style="vertical-align:top" headers="construct special"><code>(?idmsux-idmsux:</code><i>X</i>{@code )}&nbsp;&nbsp;</td>
  *     <td headers="matches"><i>X</i>, as a <a href="#cg">non-capturing group</a> with the
  *         given flags <a href="#CASE_INSENSITIVE">i</a> <a href="#UNIX_LINES">d</a>
  * <a href="#MULTILINE">m</a> <a href="#DOTALL">s</a> <a href="#UNICODE_CASE">u</a >
  * <a href="#COMMENTS">x</a> on - off</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?=}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?=}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, via zero-width positive lookahead</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?!}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?!}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, via zero-width negative lookahead</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?<=}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?<=}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, via zero-width positive lookbehind</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?<!}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?<!}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, via zero-width negative lookbehind</td></tr>
- * <tr><td valign="top" headers="construct special">{@code (?>}<i>X</i>{@code )}</td>
+ * <tr><td style="vertical-align:top" headers="construct special">{@code (?>}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, as an independent, non-capturing group</td></tr>
  *
  * </table>
@@ -643,9 +643,9 @@
  *
  * <table border="0" cellpadding="1" cellspacing="0"
  *  summary="predefined and posix character classes in Unicode mode">
- * <tr align="left">
- * <th align="left" id="predef_classes">Classes</th>
- * <th align="left" id="predef_matches">Matches</th>
+ * <tr style="text-align:left">
+ * <th style="text-align:left" id="predef_classes">Classes</th>
+ * <th style="text-align:left" id="predef_matches">Matches</th>
  *</tr>
  * <tr><td>{@code \p{Lower}}</td>
  *     <td>A lowercase character:{@code \p{IsLowercase}}</td></tr>
@@ -1209,26 +1209,26 @@
      *
      * <blockquote><table cellpadding=1 cellspacing=0
      *              summary="Split examples showing regex, limit, and result">
-     * <tr><th align="left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
-     *     <th align="left"><i>Limit&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
-     *     <th align="left"><i>Result&nbsp;&nbsp;&nbsp;&nbsp;</i></th></tr>
-     * <tr><td align=center>:</td>
-     *     <td align=center>2</td>
+     * <tr><th style="text-align:left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
+     *     <th style="text-align:left"><i>Limit&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
+     *     <th style="text-align:left"><i>Result&nbsp;&nbsp;&nbsp;&nbsp;</i></th></tr>
+     * <tr><td style="text-align:center">:</td>
+     *     <td style="text-align:center">2</td>
      *     <td>{@code { "boo", "and:foo" }}</td></tr>
-     * <tr><td align=center>:</td>
-     *     <td align=center>5</td>
+     * <tr><td style="text-align:center">:</td>
+     *     <td style="text-align:center">5</td>
      *     <td>{@code { "boo", "and", "foo" }}</td></tr>
-     * <tr><td align=center>:</td>
-     *     <td align=center>-2</td>
+     * <tr><td style="text-align:center">:</td>
+     *     <td style="text-align:center">-2</td>
      *     <td>{@code { "boo", "and", "foo" }}</td></tr>
-     * <tr><td align=center>o</td>
-     *     <td align=center>5</td>
+     * <tr><td style="text-align:center">o</td>
+     *     <td style="text-align:center">5</td>
      *     <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
-     * <tr><td align=center>o</td>
-     *     <td align=center>-2</td>
+     * <tr><td style="text-align:center">o</td>
+     *     <td style="text-align:center">-2</td>
      *     <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
-     * <tr><td align=center>o</td>
-     *     <td align=center>0</td>
+     * <tr><td style="text-align:center">o</td>
+     *     <td style="text-align:center">0</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
      * </table></blockquote>
      *
@@ -1296,11 +1296,11 @@
      *
      * <blockquote><table cellpadding=1 cellspacing=0
      *              summary="Split examples showing regex and result">
-     * <tr><th align="left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
-     *     <th align="left"><i>Result</i></th></tr>
-     * <tr><td align=center>:</td>
+     * <tr><th style="text-align:left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
+     *     <th style="text-align:left"><i>Result</i></th></tr>
+     * <tr><td style="text-align:center">:</td>
      *     <td>{@code { "boo", "and", "foo" }}</td></tr>
-     * <tr><td align=center>o</td>
+     * <tr><td style="text-align:center">o</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
      * </table></blockquote>
      *