有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

命令的java正则表达式帮助

我需要解析此命令:

direct print conference <style>:<First Name Last Name>,<First Name Last Name>,<First Name Last Name>,<title>,<conference series name>,<location>,<year>

一个示例命令是:

direct print conference ieee:Sergey Brin,Lawrence Page,,The Anatomy of a Large-Scale Hypertextual Web Search Engine,WWW,Brisbane Australia,1998

我的主要问题是(First Name Last Name)可以为空,但如何使用Regex实现这一点

对于(名字和姓氏)我总是([a-zA-Z]+)([a-zA-Z]+),但是如何用正则表达式定义可能的空位置呢

direct print conference ([a-zA-Z]+):([a-zA-Z]+) ([a-zA-Z]+),([a-zA-Z]+) ([a-zA-Z]+),([a-zA-Z]+) ([a-zA-Z]+),([^,]+),([a-zA-Z]+),([a-zA-Z ]+),([0-9]+)

这是我的正则表达式,如果名称不是空的,但是我如何在正则表达式中包含空字符,如:

([a-zA-Z]+) ([a-zA-Z]+) OR EMPTY ?

我希望你能帮助我


共 (1) 个答案

  1. # 1 楼答案

    由于您的输入基本上是一个带有特殊开头的CSV,因此此处不需要正则表达式,只需String.split()

    String input = "direct print conference ieee:Sergey Brin,Lawrence Page,,The Anatomy of a Large-Scale Hypertextual Web Search Engine,WWW,Brisbane Australia,1998";
    String[] parts = input.split(":");
    
    String[] values = parts[1].split(",");
    
    for(int i=0; i<values.length; i++) {
        System.out.println(values[i]);
    }
    

    live