java - 具有多个数组返回的字符串拆分
问题描述
我正在开发一个代码,我需要用 | 来分割行,以识别和创建 TreeMap。例子:
Op|id |first_name|last_name|gender|email
I |123 |".|." |n/a |F |myemail@hotmail.com
你怎么看,有些用户开玩笑并在文本中间放了一个单字符,现在,当我们尝试用 | 分割行时 出现异常行为:
string.split("|")
我创建了以下正则表达式来避免它,但不能完全工作:
(\|)[^.*\"|]
您可以看到我的代码从 | 获取下一个字符。我想要的是避免任何 | 在一个或多个双引号之间
任何人都可以给我一个关于如何改进我的正则表达式的方向吗?
解决方案
假设平衡引号字符,在不在引号内的管道上拆分:
string.split("\\|(?=(([^\"]*\"){2})*[^\"]*$)");
见现场演示。
这通过在管道字符后需要偶数个引号字符来实现。
推荐阅读
- python - Python 在 C++ 中崛起 ** 运算符
- java - 为什么我的android应用程序循环时不会增加时间?
- c++ - 令人沮丧的数学问题,结果不如预期(EDQ)
- tomcat - 使用 Pentaho 用户控制台 9.0 生成 PDF 报告
- python - 使用上下文管理器重构 if-else 块 python?
- python - seaborn点图可视化
- python - 如何运行模型而无需再次运行训练数据
- firebase - getter 'uid' 被调用为 null - 但只有一半的时间
- r - 结合图例填充和颜色ggplot只给出一个图例
- python - 将传递函数从 Python 转换为 Racket