Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式从字符串中读取多个变量_Java_Regex_String_Io - Fatal编程技术网

Java 使用正则表达式从字符串中读取多个变量

Java 使用正则表达式从字符串中读取多个变量,java,regex,string,io,Java,Regex,String,Io,我正在尝试将字符串拆分为不同的变量。类似于String.format()的反面。我希望匹配一个特定的正则表达式,然后字符串的这一部分应该分配给一个特定的变量。使用StringReader或任何其他类都可以吗 示例我的字符串是5 2010年12月13日16:47 A转速表220 380 现在应将其分配给变量,如: number=5 日期=2010年12月13日 time=16:47 type=A转速表 num1=220 num2=380 如果所有变量都可以是字符串,请尝试以下操作: var s =

我正在尝试将字符串拆分为不同的变量。类似于
String.format()
的反面。我希望匹配一个特定的正则表达式,然后字符串的这一部分应该分配给一个特定的变量。使用
StringReader
或任何其他类都可以吗

示例我的字符串是
5 2010年12月13日16:47 A转速表220 380
现在应将其分配给变量,如:

  • number=5
  • 日期=2010年12月13日
  • time=16:47
  • type=A转速表
  • num1=220
  • num2=380
  • 如果所有变量都可以是字符串,请尝试以下操作:

    var s = '5 13-DEC-2010 16:47 A Tach 220 380';
    var re = /(\d+)\s+(\d{1,2}-[A-Z]{3}-\d{4})\s+(\d{2}:\d{2})\s+([\w\s+]*)\s+(\d+)\s+(\d+)/
    var m = s.match(re);
    

    根据我过去的经验,没有任何内置类可以做到这一点。只需手动操作您的数据。类似于split it(str.split(“\s”);),然后存储在各自的变量中。但问题在于“转速计”的情况

    如果你问我,我会用一个不会出现在字符串中的正则表达式替换数据分隔符(在你的例子中,它是一个空格),比如“;”,在这里你的字符串将被转换为 “5;2010年12月13日;16:47;转速表;220;380”
    然后将数据拆分,并将其解析为各自的变量。

    我认为他会遇到“测速”的问题。否则,split就是一个很好的答案
    public static void main(String[] args) {
        String s = "5 13-DEC-2010 16:47 A Tach 220 380";
        String re = "(\\d+)\\s+(\\d{1,2}-[A-Z]{3}-\\d{4})\\s+(\\d{2}:\\d{2})\\s+([\\w\\s+]*)\\s+(\\d+)\\s+(\\d+)";
        Pattern p = Pattern.compile(re);
        String number=null,date=null,time=null,type=null,num1=null,num2=null;
        Matcher m = p.matcher(s);
        if (m.matches()) {
            number = m.group(1);
            date = m.group(2);
            time = m.group(3);
            type = m.group(4);
            num1 = m.group(5);
            num2 = m.group(6);
        }
        System.out.println(number);
        System.out.println(date);
        System.out.println(time);
        System.out.println(type);
        System.out.println(num1);
        System.out.println(num2);
    }