如果你堅持使用正則表達式這樣做,那麼你可以嘗試使用\s*<[^>]*>\s*
作爲分隔符:
String text = "foo <on> bar </on> thing <on> again</on> now";
String[] parts = text.split("\\s*<[^>]*>\\s*");
System.out.println(java.util.Arrays.toString(parts));
// "[foo, bar, thing, again, now]"
我不知道這是否是你所需要的東西,因爲它是不完全清楚。
也許需要一個像這樣:
String text = "1<on>2</on>3<X>4</X>5<X>6</X>7<on>8</on><X>9</X>10";
String[] parts = text.split("\\s*</?on>\\s*|<[^>]*>[^>]*>");
System.out.println(java.util.Arrays.toString(parts));
// prints "[1, 2, 3, 5, 7, 8, , 10]"
這不處理嵌套的標籤。如果你有這些,你真的想轉儲正則表達式並使用一個實際的HTML解析器。
如果你不想在陣列中間的空字符串,那麼就(?:delimiter)+
。
String text = "1<on>2</on>3<X>4</X>5<X>6</X>7<on>8</on><X>9</X>10";
String[] parts = text.split("(?:\\s*</?on>\\s*|<[^>]*>[^>]*>)+");
System.out.println(java.util.Arrays.toString(parts));
// prints "[1, 2, 3, 5, 7, 8, 10]"
這看起來非常像XML。它實際上是* XML嗎?如果是這樣,請使用XML API而不是正則表達式。 – 2010-05-21 09:32:37
你有問題嗎?你想用正則表達式來解決它?那麼,猜猜看是什麼? – Riduidel 2010-05-21 09:48:44
空串來自哪裏? – polygenelubricants 2010-05-21 09:54:03