如果你坚持使用正则表达式这样做,那么你可以尝试使用\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