我在解析文本时遇到问题,我有采访记录,而且我有一个频道正在讲话的标签(ch1,ch2)。我需要将其分解为数组,然后我可以搜索有人告诉特定单词的频道。
例如,这是访谈的一部分
<ch1>Hello</ch1> <ch2>Hello</ch2> <ch1>How are you</ch1><ch2>I'm fine</ch2>
这是一个字符串
String text = "<ch1>Hello</ch1> <ch2>Hello</ch2> <ch2>How are you</ch2>
<ch2>I'm fine</ch2>";
我想要输出
String output[] = {<ch1>Hello</ch1>,<ch2>Hello</ch2>,....}
感谢您的帮助。
答案 0 :(得分:3)
您可以将正则表达式与lookahead and lookbehind一起使用:
String dialogue = "<ch1>Hello</ch1> <ch2>Hello</ch2> <ch1>How are you</ch1><ch2>I'm fine</ch2>";
String[] statements = dialogue.split("(?<=</ch[12]>)\\s*(?=<ch[12]>)");
System.out.println(Arrays.asList(statements));
输出:
[<ch1>Hello</ch1>, <ch2>Hello</ch2>, <ch1>How are you</ch1>, <ch2>I'm fine</ch2>]
由于许多<
和>
,它有点难以阅读,但模式是这样的:
split("(?<=endOfLastPart)inBetween(?=startOfNextPart)")
答案 1 :(得分:0)
text.split("<ch").join("-<ch").split("-").
可以是任何字符串而不是&#34; - &#34;可以使用。