【问题标题】:Regular expression split (|) [closed]正则表达式拆分(|)[关闭]
【发布时间】:2019-12-12 20:50:12
【问题描述】:

我用逗号发送一个字符串"hello,145451,new,5565",这个表达式",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)",这个结果运行正确:

你好 145451 新的 5565

它返回四个元素。

但现在我需要将"hello|145451|new|5565"| 分开

我使用这个表达式:"\\|(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)",结果是:

你好|145451|新|5565

它只返回一个元素

谁能帮帮我?

【问题讨论】:

  • String[] split = "hello|145451|new|5565".split("|");
  • 没有找到这个,我想替换这个表达式 ",(?=(?:[^\"]\"[^\"]\")[^\"]$)" 但是用“|”隔开
  • Your code works as expected"\\|(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)" 在双引号之外与 | 正确拆分(虽然正则表达式效率不高,在这种情况下强烈建议使用 CSV 解析器)。
  • 是的!运行良好,非常感谢

标签: java regex split


【解决方案1】:

管道|是正则表达式中的元字符,添加双反斜杠以基于管道分割字符串。

String str = "hello|145451|new|5565";
String arr[] = str.split("\\|(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

for(String myStr: arr) {
    System.out.println(myStr);
}

【讨论】:

  • 我正在这样做但没有找到
  • 通过|分割你想得到结果hello145451new5565?它应该可以正常工作。
  • 无论如何我想替换这个表达式 ",(?=(?:[^\"]\"[^\"]\")[^\"]$)" 我试过“\\|”但未找到...
  • @danievel 我已经更新了代码,请使用forEach 来解决您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多