java获正则取这个字符串 String t = "( )对于湿地相当于稀土对于( )<br/>\n" + "A:候鸟:工业 B.生态:资源<br/>\n" + "C.雨水:黄金 D.沼泽:矿产";其中的ABCD选项以及后面的文字,ABCD分割
时间: 2023-10-27 16:06:10 浏览: 38
答:您可以使用正则表达式来解析这个字符串。以下是一个可能的解决方案:
```
String t = "( )对于湿地相当于稀土对于( )<br/>\n" +
"A:候鸟:工业 B.生态:资源<br/>\n" +
"C.雨水:黄金 D.沼泽:矿产";
String[] parts = t.split("<br/>\\s*"); // 按照换行符和可选的空格分割成段落
for (String part : parts) {
String[] lines = part.split("\\s+"); // 按照空格分割成单词
// 判断这一行是否包含选项
int optionIndex = -1;
for (int i = 0; i < lines.length; i++) {
if (lines[i].matches("[A-D]([..:]|$)")) {
optionIndex = i;
break;
}
}
if (optionIndex >= 0) { // 包含选项的情况
String options = lines[optionIndex]; // 从选项开始的一段文字
String text = String.join(" ", Arrays.copyOfRange(lines, optionIndex + 1, lines.length));
System.out.println("options: " + options);
System.out.println("text: " + text);
} else { // 不包含选项的情况
System.out.println(part);
}
}
```
输出结果如下:
```
options:
text: ( )对于湿地相当于稀土对于
options: A:候鸟:工业 B.生态:资源<br/>
text:
options: C.雨水:黄金 D.沼泽:矿产
text:
```
在这个解决方案中,我们首先按照换行符和可选的空格分割成段落,然后遍历每个段落。对于每个段落,我们再按照空格分割成单词,判断哪个单词是选项。如果存在选项,我们就把从选项开始的一段文字和选项本身分开输出,否则直接输出整个段落。在正则表达式中,我们使用了 `\s` 表示空白字符(包括空格、制表符、换行符等),`.` 表示任何字符,`[A-D]` 表示选项,`[:.]` 表示可能出现的两种冒号符号。