【问题标题】:Regex pattern to split using either '==' or '='使用 '==' 或 '=' 分割的正则表达式模式
【发布时间】:2017-11-27 13:32:07
【问题描述】:

这个想法是使用 '=' 或 '==' 分隔符拆分 base64 编码的字符串。

源文本可能如下所示:

Zte+2RAEIEMU/2C6W6udzqkBKOM1Cp1R8tjbA17aAf0HZQ9NPpiJ7eWCA+r0Y00sRYFRwIMG/3IaOamst0WHNbB1QDZktNJxTIW4nYnA93Q=
Zte+2RAEIEMU/2C6W6udzqkBKOM1Cp1R8tjbA17aAf2yK8KmrbIGVD8vOyZj4uVg579ehXm9OrUsDebQ9C7OAg==

我尝试将(?<==) 用于 .split() 方法,但如您所知,它会留下 '=' 空字符串。在(?<=\b[=]) 的情况下 - 相同的问题,但在某些情况下删除了第二个“=”。

这个想法是写类似“要么使用单个'=',其前后包含除'='之外的任何字符,要么使用相同的条件使用双'=='。但是,这个没有成功。

【问题讨论】:

  • 试试={1,2}?
  • 请记住,base64 编码的字符串并不总是以 = 或 == 结尾。只有当字符串需要填充长度时,它们才会出现。为什么不使用换行符作为分隔符?您的源文本绝对看起来可以使用。
  • 你也可以使用replaceAll:str.replaceAll("=", "")。编辑:固定方法,afaik replace 仅替换给定字符串的第一次出现。
  • 尝试使用 =+ 一个或多个 = 符号
  • @SimoErkinheimo 你是完全正确的 - 我完全忘记了换行符作为分隔符。解决了我的问题,谢谢。

标签: java regex text split base64


【解决方案1】:

您有两个 Base64 编码的数据块,它们由一个新行分隔。您应该在换行符处拆分字符串。您不能依赖“=”的存在,因为这只是在必要时填充最后两个字节。有时有一个“=”,有时有两个“==”,有时根本找不到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多