我目前正在使用遵循以下格式的字符串:
4,Matt, Hopkins,MI,5.75,Wood,33.0,2.25,2.1,2016-09-02,74.25,69.3,8.254125,151.804125
并且我尝试使用正则表达式将所有单词和整数提取为单独的字符串(例如在MI,Wood,33.0等中),但有一个例外:我想将第一个逗号后面的部分视为单个字符串,直到我们掌握了所有上限-因此正则表达式将提取以下内容:
[4] [Matt, Hopkins] [MI] [5.75] [Wood] and so forth.
请注意,名称部分可以完全没有逗号,即[Hopkins],也可以不超过一个逗号,即[Matt,Jr.,Hopkins].所有大写字母字段描述的是状态,因此始终遵循相同的格式.
我对Regex不够了解,无法做到这一点-到目前为止,我只想到了
[a-zA-Z(?:\d*\.)?\d+-]+
可以处理除名称之外的所有字段.
解决方法:
您可以执行以下操作(我的Java有点生锈,我正在通过电话发布此信息):
String[] values = data.split(",(?! )");
Java允许在正则表达式上分割字符串,而这个简单的标本使用负号前瞻性来确保您仅分割CSV逗号,而不是名称中的逗号.
标签:java,regex
来源: https://codeday.me/bug/20191026/1938633.html