Originariamente inviato da -MaVeRiK86-
Se io invece volessi espanderla per controllare l'intera stringa, ossia
String|String|int|int|int|String

String strPattern = "[a-zA-Z0-9 \\t]\\|[a-zA-Z0-9 \\t]\\|(\\d{*})(\\d{*})(\\d{*})\\[a-zA-Z0-9 \\t]";
Devo aver scritto una cavolata immane..
È sbagliata sia a livello tecnico della espressione sia come significato della espressione (che non fa quello che vorresti).

Io nel mio esempio ho messo [a-zA-Z0-9 \\t]+, vedi il + finale? Tu già questo non l'hai messo. Poi hai messo {*} ed è sbagliato. Se vuoi "uno o più digit", allora basta \\d+.
I "quantificatori" con { } sono solo in una delle forme:

codice:
X{n}  	X, exactly n times
X{n,} 	X, at least n times
X{n,m} 	X, at least n but not more than m times
dove n e m sono numeri, come ripeto non puoi mettere *.

Infine non hai messo il match del pipe | tra i 3 int e alla fine hai messo un \\[ che non è quello che volevi sicuramente.

E un suggerimento finale: quando la regex è lunga/complessa, ti conviene spezzarla in più String semplici e poi concatenarli.

codice:
final String wordExpr = "[a-zA-Z0-9 \\t]+";
final String pipeExpr = "\\|";
final String intExpr = "(\\d+)";

String tuaExpr = wordExpr + pipeExpr + ..........;