-3

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

3 回答 3

1

你可以使用:

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

(?<=.)表示最后一个字符是任何东西(因此不是行首)。

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

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

参考

于 2013-03-07T14:56:58.490 回答
1
String[] ss = str.split(" |(?<=\\S)(?=\\()");

ss数组保存输出段。

于 2013-03-07T14:59:28.910 回答
0

您可以 replaceAll 使其以逗号(或其他标记)分隔然后拆分:

str.replaceAll("(\\(\\d+\\)\\w*)", "$1,").split(",")
于 2013-03-07T14:50:26.627 回答