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);
}