【问题标题】:Java Split with delimiter with dynamic value带有动态值的分隔符的Java拆分
【发布时间】:2015-02-24 17:35:02
【问题描述】:

我需要将我的文本分成几部分并保留分隔符,我知道我可以使用下面的代码来做到这一点,如 Here 所述:

Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))"))

但我卡住的是我的文本包含分隔符,其中有一个值,我的分隔符是 @[x]@ 其中 x 是一个可以是任何数字的值。例如:@[1]@、@[44]@。我想要实现的是得到一个数组如下:

text : "Hello my Name is blabla.@[1]@How are you today?@[2]@ByeBye"

以及我需要得到什么:

[ "Hello my Name is blabla.", "@[1]@", "How are you today?", "@[2]@", "ByeBye" ]

我怎样才能做到这一点?提前致谢。

【问题讨论】:

    标签: java android regex split


    【解决方案1】:

    尝试以下正则表达式作为分隔符:

    ((?<=(@\\[\\d\\]@))|(?=(@\\[\\d\\]@)))
    

    基本上用表达式(@\\[\\d\\]@) 替换分号,其中\d 匹配任何数字。

    如果可以存在多个数字,您可以为可能的数字数指定一个范围,例如 \d{1,1000} 而不是 \d 最多有 1000 个数字。使用 \d+ 之类的表达式的未知位数不能与 Java 后向正则表达式一起使用。

    【讨论】:

    • @Pshemo 感谢您的纠正!我完全错过了。
    • 很抱歉再次碰到这个问题,但 \d+ 在我的情况下工作得非常好,例如 "blablabla.@[1]@blablabla@[27]@ 就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多