java - 用于提取信息的正则表达式

标签 java regex

我有一个具有以下数据格式的 csv 文件

123,"12.5","0.6","15/9/2012 12:11:19"

这些数字是:

  • 订单号
  • 价格
  • 折扣率
  • 销售日期和时间

我想从线路中提取这些数据。

我尝试过正则表达式:

String line = "123,\"12.5\",\"0.6\",\"15/9/2012 12:11:19\"";
Pattern pattern = Pattern.compile("(\\W?),\"([\\d\\.\\-]?)\",\"([\\d\\.\\-]?)\",\"([\\W\\-\\:]?)\"");
Scanner scanner = new Scanner(line);
if(scanner.hasNext(pattern)) {
    ...
}else{
    // Alaways goes to here
}

看起来我的模式不正确,因为它总是转到 else 部分。我做错了什么?有人可以为此提出解决方案吗?

非常感谢。

最佳答案

具体拆分似乎有点过于复杂,您应该尝试按元素之间最明显的公共(public)分隔符(逗号)进行拆分。也许你应该尝试这样的事情:

    final String info = "123,\"12.5\",\"0.6\",\"15/9/2012 12:11:19\"";
    final String[] split = info.split(",");
    final int orderNumber = Integer.parseInt(split[0]);
    final double price = Double.parseDouble(split[1].replace("\"", ""));
    final double discountRate = Double.parseDouble(split[2].replace("\"", ""));
    final String date = split[3].replace("\"", "");

关于java - 用于提取信息的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684440/

相关文章:

java - 指定java对象的超时时间

java - Maven:发现从元素 "reportSets"开始的无效内容

java - 如何检查用户意外终止连接

Java 图形绘图未显示在绘图面板上

php preg_match_all 不工作

regex - 在定界区域外查找短语

Python re.sub 用 1 个替换 3 个或更多相同字符

java - Grails hibernate 方言

regex - 负前瞻正则表达式

javascript - 正则表达式复杂模式