使用正则表达式模式将字符串拆分为冒号

时间:2012-05-09 13:25:40

标签: java regex

我有一个像这样的字符串。

ars:a:currency (Argentina!: Pesos):

我需要使用冒号分割字符串,但不应拆分括号内的冒号。我需要一个正则表达式来分割这个字符串。

我的输出应该像

ars
a
currency (Argentina!: Pesos)**

帮助表示赞赏:)

3 个答案:

答案 0 :(得分:1)

你可以用一个正则表达式来实现它,如果你确定不会有任何嵌套的括号。在这种情况下,只有在下一个括号不是结束括号时才能简单地拆分冒号:

String[] splitArray = subjectString.split(
    "(?x):    # Multiline regex: Match a colon\n" +
    "(?!      # only if it's impossible to match the following at this point:\n" +
    " [^()]*  #  any number of characters besides parentheses\n" +
    " \\)     #  followed by a closing parenthesis\n" +
    ")        # End of lookahead assertion");

答案 1 :(得分:0)

单个正则表达式不适用。如果没有太多复杂的话,你可以做的是String.split("[()]"),用:将每个其他数组索引处的字符串拆分,最后连接回来。

答案 2 :(得分:0)

也许这样的事情对你有用:

String[] tok = str.split(":", 3);

其中str是您的字符串。