尝试编写正则表达式来处理ID3v23 TCON值的解码

时间:2013-03-07 14:45:50

标签: java regex

如何编写正则表达式(在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)

3 个答案:

答案 0 :(得分:1)

您可以使用:

String[] arr = str.split(" |(?<=.)(?=\\(\\d+\\))");

(?<=.)表示最后一个字符是任何字符(因此不是行的开头)。

(?=\\(\\d+\\))表示下一个字符为(后跟一个或多个数字后跟)

注意:以上内容可能比需要的更复杂一些,您可以将(?=\\(\\d+\\))简化为(?=\\(),就像肯特的回答一样。这完全取决于你想要匹配的内容。

Reference

答案 1 :(得分:1)

String[] ss = str.split(" |(?<=\\S)(?=\\()");

ss数组包含输出段。

答案 2 :(得分:0)

您可以替换所有以逗号(或其他标记)分隔,然后拆分:

str.replaceAll("(\\(\\d+\\)\\w*)", "$1,").split(",")