如何编写正则表达式(在java中)以从mp3中的ID3标记的TCON帧中拆分字符串,即http://id3.org/id3v2.3.0
示例如下(没有最多可以有多少个术语)
输入:(1)(2)
输出继电器:
(1)
(2)
输入:(1)Indie(2)
输出:
(1)Indie
(2)
输入:Indie Rock
输出:
Indie
Rock
还有两种特殊情况的文本可以放在括号(RX)和(CR)中,所以
输入:(RX)(CR)
输出:
(RX)
(CR)
答案 0 :(得分:1)
您可以使用:
String[] arr = str.split(" |(?<=.)(?=\\(\\d+\\))");
(?<=.)
表示最后一个字符是任何字符(因此不是行的开头)。
(?=\\(\\d+\\))
表示下一个字符为(
后跟一个或多个数字后跟)
。
注意:以上内容可能比需要的更复杂一些,您可以将(?=\\(\\d+\\))
简化为(?=\\()
,就像肯特的回答一样。这完全取决于你想要匹配的内容。
答案 1 :(得分:1)
String[] ss = str.split(" |(?<=\\S)(?=\\()");
ss
数组包含输出段。
答案 2 :(得分:0)
您可以替换所有以逗号(或其他标记)分隔,然后拆分:
str.replaceAll("(\\(\\d+\\)\\w*)", "$1,").split(",")